Huawei AppGallery Connect API - 403 客户端令牌授权失败
Huawei AppGallery Connect API - 403 client token authorization fail
我正在尝试使用 link 中提到的 REST API 将应用程序发布过程自动化到华为商店。
https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agcapi-overview
我成功收到了访问令牌,但其他操作(例如:获取应用信息、获取上传 URL)失败并出现以下状态代码和错误。
403 client token authorization fail.
我没有写任何代码,我只是使用下面的示例代码并更新了 clientId、clientSecret、appId。
可能会出什么问题?
更新:
- 将 Project 设置为 N/A 以将 API 客户端定义为 team-level 客户端.
- 将角色设置为管理员
- 请检查您的客户端角色是否为管理员。
会员的角色决定了在AppGallery Connect中的权限。管理员拥有大部分操作权限,可以添加会员账号并为其分配权限。角色与权限的对应关系详见Roles and Permissions.
- 使用 AppGallery Connect API
调用AppGallery ConnectAPI,您需要提前获得AppGallery Connect服务器的授权,可以使用以下两种方式之一:API客户端方式和OAuth客户端方式。要在API客户端模式下调用AppGallery Connect API,您需要在AppGallery Connect中管理您的API客户端。 API 客户只能由您的团队帐户持有人管理。基本流程如下:
一个。创建 API 客户端
- 登录 AppGallery Connect 和 select 用户和权限。
- 前往左侧导航树中的 Api Key > AppGalleryConnect API 并点击 创建.
- 将Name设置为自定义的客户端名称,将Roles设置为对应的角色,点击Confirm。
- 客户端创建成功后,在客户端信息列表中记录Client ID和Key的值
查看下面的截图:
乙。获取访问API
的令牌
创建API客户端后,API客户端需要在AppGallery Connect中进行认证。认证成功后,API客户端获取到访问AppGallery ConnectAPI的access token。使用此访问令牌,您可以访问 AppGallery Connect API.
要获取访问令牌,您需要在您的应用程序中添加调用Obtaining a Token API的代码。
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;
}
获取access token后,您可以在访问AppGallery Connect时使用access token进行身份认证API。访问令牌的默认有效期为 48 小时。如果访问令牌过期,您需要获取新的访问令牌。
C。访问 API
获取access token后,可以使用access token调用AppGallery ConnectAPI完成功能开发
如本 中所述,一旦我将项目设置为 NA,它就开始工作了。
感谢@shirley
我正在尝试使用 link 中提到的 REST API 将应用程序发布过程自动化到华为商店。 https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agcapi-overview
我成功收到了访问令牌,但其他操作(例如:获取应用信息、获取上传 URL)失败并出现以下状态代码和错误。
403 client token authorization fail.
我没有写任何代码,我只是使用下面的示例代码并更新了 clientId、clientSecret、appId。
可能会出什么问题?
更新:
- 将 Project 设置为 N/A 以将 API 客户端定义为 team-level 客户端.
- 将角色设置为管理员
- 请检查您的客户端角色是否为管理员。
会员的角色决定了在AppGallery Connect中的权限。管理员拥有大部分操作权限,可以添加会员账号并为其分配权限。角色与权限的对应关系详见Roles and Permissions.
- 使用 AppGallery Connect API
调用AppGallery ConnectAPI,您需要提前获得AppGallery Connect服务器的授权,可以使用以下两种方式之一:API客户端方式和OAuth客户端方式。要在API客户端模式下调用AppGallery Connect API,您需要在AppGallery Connect中管理您的API客户端。 API 客户只能由您的团队帐户持有人管理。基本流程如下:
一个。创建 API 客户端
- 登录 AppGallery Connect 和 select 用户和权限。
- 前往左侧导航树中的 Api Key > AppGalleryConnect API 并点击 创建.
- 将Name设置为自定义的客户端名称,将Roles设置为对应的角色,点击Confirm。
- 客户端创建成功后,在客户端信息列表中记录Client ID和Key的值
查看下面的截图:
乙。获取访问API
的令牌创建API客户端后,API客户端需要在AppGallery Connect中进行认证。认证成功后,API客户端获取到访问AppGallery ConnectAPI的access token。使用此访问令牌,您可以访问 AppGallery Connect API.
要获取访问令牌,您需要在您的应用程序中添加调用Obtaining a Token API的代码。
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;
}
获取access token后,您可以在访问AppGallery Connect时使用access token进行身份认证API。访问令牌的默认有效期为 48 小时。如果访问令牌过期,您需要获取新的访问令牌。
C。访问 API
获取access token后,可以使用access token调用AppGallery ConnectAPI完成功能开发
如本
感谢@shirley