开发者社区> 问答> 正文

请教如何通过代理方式获取accesstoken

工作环境未开放外网,钉钉api只能通过代理方式访问
使用的是新版本SDK。
请教如何通过代理方式使用新版本SDK获取企业内部应用的accessToken



package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * 使用 Token 初始化账号Client
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.dingtalkoauth2_1_0.Client createClient() throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
        config.protocol = "https";
        config.regionId = "central";
        return new com.aliyun.dingtalkoauth2_1_0.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.dingtalkoauth2_1_0.Client client = Sample.createClient();
        com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest getAccessTokenRequest = new com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest()
                .setAppKey("dingeqqpkv3xxxxxx")
                .setAppSecret("GT-lsu-taDAxxxsTsxxxx");
        try {
            client.getAccessToken(getAccessTokenRequest);
        } catch (TeaException err) {
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err 中含有 code 和 message 属性,可帮助开发定位问题
            }

        } catch (Exception _err) {
            TeaException err = new TeaException(_err.getMessage(), _err);
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err 中含有 code 和 message 属性,可帮助开发定位问题
            }

        }        
    }
}

联系了钉钉技术支持 给了个方案
https://help.aliyun.com/zh/sdk/developer-reference/proxy?spm=a2c4g.11186623.0.0.4a9b6856CtYj1A

// Client 代理参数设置
        config.setHttpProxy("http://127.0.0.1:9898");

nginx代理配置

location /v1.0{

proxy_pass https://api.dingtalk.com/v1.0;
}

展开
收起
游客oqti4azx3ataq 2023-08-04 15:24:06 184 0
4 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    您好!要通过代理方式使用新版本SDK获取企业内部应用的accessToken,您可以在创建Client时设置代理参数。在样例代码中,您可以通过在Config中添加proxyHost和proxyPort字段完成代理设置。示例如下:

    import com.aliyun.tea.*;

    public class Sample {

    /**
     * 使用 Token 初始化账号Client,并设置代理
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.dingtalkoauth2_1_0.Client createClient() throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
        config.protocol = "https";
        config.regionId = "central";
    
        // 设置代理
        config.proxyHost = "your_proxy_host";
        config.proxyPort = 8080;
    
        return new com.aliyun.dingtalkoauth2_1_0.Client(config);
    }
    
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.dingtalkoauth2_1_0.Client client = Sample.createClient();
        com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest getAccessTokenRequest = new com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest()
                .setAppKey("dingeqqpkv3xxxxxx")
                .setAppSecret("GT-lsu-taDAxxxsTsxxxx");
        try {
            client.getAccessToken(getAccessTokenRequest);
        } catch (TeaException err) {
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err 中含有 code 和 message 属性,可帮助开发定位问题
            }
    
        } catch (Exception _err) {
            TeaException err = new TeaException(_err.getMessage(), _err);
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err 中含有 code 和 message 属性,可帮助开发定位问题
            }
    
        }        
    }
    

    }
    您需要将your_proxy_host替换为您的代理主机地址,将8080替换为您的代理主机端口号。这样,您就可以使用代理来访问钉钉API了。

    希望能帮到您!如果您还有其他问题,请随时提问。

    2023-08-04 23:21:06
    赞同 展开评论 打赏
  • 通过代理方式使用新版本SDK获取企业内部应用的accessToken,你可以按照以下步骤进行:

    1. 设置代理:首先,需要设置代理以便在没有直接外网访问权限的情况下进行网络请求。根据你使用的编程语言和SDK,查找相应的代理设置方法,并将代理配置为你可用的代理服务器。

    2. 创建企业内部应用:确保已经在钉钉开放平台上创建了企业内部应用,并获得了相应的AppKey和AppSecret。

    3. 初始化SDK:使用新版本的SDK,按照文档中的说明初始化SDK,并将代理配置传递给SDK。

    4. 通过代理获取accessToken:使用SDK提供的功能,通过代理方式发送请求以获取accessToken。根据SDK的具体使用方法,调用相应的函数或方法来获取accessToken。

    5. 处理accessToken响应:一旦收到accessToken的响应,你可以将其保存下来并在后续的API调用中使用。请注意,accessToken的有效期通常较短,因此需要定期刷新。

    2023-08-04 20:31:24
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    可以按照以下步骤进行操作:

    配置代理设置:在你的代码中,根据你所使用的编程语言和SDK,设置代理服务器的相关参数。这包括代理服务器的地址、端口号以及认证信息(如果需要认证)。

    创建代理客户端:使用SDK提供的方法或类,创建一个代理客户端。这个客户端将会通过代理服务器来发送请求和接收响应。

    发起代理请求:使用代理客户端发送一个HTTP请求到钉钉API的身份验证接口,以获取企业内部应用的AccessToken。确保在请求中包含必要的参数,如企业内部应用的AppKey、AppSecret等。

    处理代理响应:从代理客户端接收到响应后,解析响应数据并提取AccessToken的值。确保对代理响应进行适当的错误处理和异常处理。

    2023-08-04 18:04:00
    赞同 展开评论 打赏
  • 跟了下源码
    config.endpoint可以设置访问IP
    config.protocol可以设置http请求
    但是改不了port和path。

    2023-08-04 17:10:43
    赞同 展开评论 打赏
问答分类:
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载