首页 > 其他分享 >【AGC】AGC鉴权认证模式获取clientToken的方法

【AGC】AGC鉴权认证模式获取clientToken的方法

时间:2022-08-27 10:37:43浏览次数:97  
标签:String AGC token clientToken new post 鉴权

​近期有开发者在使用API方式接入Indexing服务时提出疑问,如何获取clientToken。其实AGC认证模式是基于clientToken鉴权方式,由云侧网关与AGC微服务实现的一套OAuth2标准鉴权体系。访问网关的后端服务需要具备有效的clientId以及clientSecret,才能通过云侧网关的鉴权校验,并对业务接口发起有效地调用。下面介绍两种获取clientToken的方法。

获取clientId和clientSecret

两种方法的前提都是需要先获取到clientId和clientSecret。

登录AGC控制台,选择“用户与访问”。选择“API密钥 > Connect API”,点击“创建”,新建API客户端。

cke_293.png

api地址和请求参数

api地址:https://connect-api.cloud.huawei.com/api/oauth2/v1/token

cke_872.png

方法1:postman获取clientToken

第一种方法很简单,直接使用postman,在Body中输入grant_type、client_id和client_secret的键值对,无需添加Headers,使用post方式直接发起请求,即可获得clientToken。

cke_1696.png

 

方法2:项目中使用代码调用api获取clientToken

调用示例:

public static String getToken(String domain, String clientId, String clientSecret) {
    String token = null;
    try {
        HttpPost post = new HttpPost(domain + "/oauth2/v1/token");

        JSONObject keyString = new JSONObject();
        keyString.put("client_id", "18893***83957248");
        keyString.put("client_secret", "B15B497B44E080EBE2C4DE4E74930***52409516B2A1A5C8F0FCD2C579A8EB14");
        keyString.put("grant_type", "client_credentials");

        StringEntity entity = new StringEntity(keyString.toString(), Charset.forName("UTF-8"));
        entity.setContentEncoding("UTF-8");
        entity.setContentType("application/json");
        post.setEntity(entity);

        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpResponse response = httpClient.execute(post);
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode == HttpStatus.SC_OK) {

            BufferedReader br =
                new BufferedReader(new InputStreamReader(response.getEntity().getContent(), Consts.UTF_8));
            String result = br.readLine();
            JSONObject object = JSON.parseObject(result);
            token = object.getString("access_token");
        }

        post.releaseConnection();
        httpClient.close();
    } catch (Exception e) {

    }
    return token;
}

调用成功后返回正确的响应,得到clientToken与有效期:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "access_token": "eyJhbGciOiJIUzU****************",    
    "expires_in": 172800
}

​欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

 

标签:String,AGC,token,clientToken,new,post,鉴权
From: https://www.cnblogs.com/developer-huawei/p/16629916.html

相关文章

  • 【AGC】崩溃服务之常见问题
    ​ 1、崩溃服务后,应用出现崩溃闪退的情况。解决方案:1、如果是集成崩溃服务后,打开应用直接崩溃闪退,则有可能是崩溃服务未能进行正确的集成配置,需要按照以下步骤进行排查:......
  • 【AGC】典型问题8月第一期
    ​1、集成崩溃服务后,崩溃发生时,没有收到邮件提醒。【问题描述】 集成崩溃服务完成后,测试时,控制台上有显示有异常报告,用户与访问中也开启了崩溃的提醒,邮箱账号也是没有问......
  • 【AGC】【云数据库】云数据库常见问题
    ​1、【问题描述】是否可以添加支持kotlin文件的导出功能?​【解决方案】目前,我们没有这样的开发议程,因为有对Java的支持。 2、【问题描述】咨询一下云数据关联......
  • 【AGC】打开付费下载应用提示安装华为应用市场
    ​ 【问题描述】最近在华为应用市场发布了一个付费下载的应用,使用华为手机付费后安装应用,然后打开应用一切正常,但是有用户反馈在非华为手机上安装应用,打开提示“请先安......
  • 【AGC】如何快速部署Serverless Url缩短模板
     使用场景Serverless短URL生成模板实现您将在云数据库服务中URL缩短的诉求。使用此模板后,仅需在云数据库服务侧配置长URL值。Serverless短URL生成模板会在后台与BitlyA......
  • 【AGC】典型问题FAQ 6
    ​1.    app签名过期,更新签名时能否下架原先的app,以新包新签名重新上架应用。问题描述:1、app签名过期,有什么对应的解决机制,是否可以在应用市场内走签名变更流......
  • 「AGC036F」Square Constraints 题解
    「AGC036F」SquareConstraints题解题目大意给定一个整数$n$,求有多少种$0\-\2n!-!1$的排列$P$,使得对于每个$i$,都有$n^2\lei^2+P_i^2\le4n^2$。......
  • 【HMS Core】【SDK集成】Android Studio中Gradle Version7.1+以上版本如何集成agcp插
    ​1、问题描述之前项目中关于华为agcp插件的依赖方式如下图所示:​但是现在AndroidStudio中Gradle的版本升级到7.3.3之后,build.gradle文件格式改动较大,发现无法正常集成......
  • 【AGC】通过AGC认证服务在Android平台实现华为账号登录功能
    ​简介AppGalleryConnect认证服务提供了云侧服务和SDK,可以帮助开发者为应用快速构建安全可靠的用户认证系统,以便应用可以对用户进行身份认证。AppGalleryConnect认证服......
  • 【AGC】典型问题FAQ 5
    ​ 1、如何配置重新生成的证书指纹。   问题描述:开发者在使用应用签名服务后,AGC会根据签名密钥重新生成证书指纹,可能不同于开发应用时本地生成的签名证书指纹。......