【AGC】HarmonyOS鸿蒙Next中AGC鉴权认证模式获取clientToken的方法

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

获取clientId和clientSecret

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

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

api地址和请求参数

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

方法1:postman获取clientToken

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

方法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
}

更多关于【AGC】HarmonyOS鸿蒙Next中AGC鉴权认证模式获取clientToken的方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,AGC(AppGallery Connect)鉴权认证模式获取clientToken的方法如下:

  1. 配置AGC服务:首先在AGC控制台创建项目并启用相关服务,如认证服务。在项目中添加应用,并获取agconnect-services.json配置文件。

  2. 集成AGC SDK:在HarmonyOS项目中集成AGC SDK,确保在build.gradle文件中添加依赖项,并将agconnect-services.json文件放置在项目的entry/src/main/resources/rawfile目录下。

  3. 初始化AGC:在应用启动时初始化AGC,通常在AbilityonStart方法中调用AGCInstance.initialize(context)

  4. 获取clientToken:使用AGCAuth服务获取clientToken。示例代码如下:

    import agconnect from '[@hw-agconnect](/user/hw-agconnect)/api';
    import '[@hw-agconnect](/user/hw-agconnect)/auth';
    
    async function getClientToken() {
      try {
        const authService = agconnect.auth();
        const token = await authService.getToken();
        console.log('clientToken:', token);
      } catch (error) {
        console.error('Failed to get clientToken:', error);
      }
    }
    
  5. 处理clientToken:获取到clientToken后,可以将其用于后续的API请求或其他需要鉴权的操作。

通过以上步骤,可以在HarmonyOS鸿蒙Next中成功获取clientToken,并用于AGC鉴权认证。

更多关于【AGC】HarmonyOS鸿蒙Next中AGC鉴权认证模式获取clientToken的方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,通过AGC(AppGallery Connect)进行鉴权认证时,获取clientToken的方法如下:

  1. 集成AGC SDK:首先在项目中集成AGC SDK,确保依赖配置正确。
  2. 初始化AGC:在应用启动时,调用AGCInstance.initialize(context)初始化AGC。
  3. 获取clientToken:通过AGCCloudService.getInstance().getClientToken()方法获取clientToken,该方法返回一个Task<String>,需异步处理结果。

示例代码:

AGCCloudService.getInstance().getClientToken().addOnSuccessListener(token -> {
    // 处理获取到的clientToken
}).addOnFailureListener(e -> {
    // 处理错误
});

确保在AndroidManifest.xml中配置正确的AGC服务权限和元数据。

回到顶部