问题描述
我正在尝试使用链接中提到的REST API将应用发布过程自动化到华为商店。 https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agcapi-overview
我成功收到访问令牌,但是其他操作(例如:获取应用程序信息,获取上传URL)失败,并显示以下状态代码和错误消息。
403 client token authorization fail.
我没有编写任何代码,我只使用下面的示例代码并更新了clientId,clientSecret,appId。
出什么问题了?有人可以帮忙吗?
解决方法
如本comment中所述,一旦我将项目设置为NA,它便开始工作。
感谢@shirley
,更新:
- 将项目设置为 N / A ,以将API客户端定义为团队级别的客户端。
- 将角色设置为管理员
- 请检查您的客户角色是否为管理员。
成员的角色确定AppGallery Connect中的权限。管理员具有大多数操作权限,可以添加成员帐户并为其分配权限。有关角色和权限之间的映射的详细信息,请参阅Roles and Permissions。
- 使用AppGallery Connect API
要调用AppGallery Connect API,您需要使用以下两种模式之一预先从AppGallery Connect服务器获取授权:API客户端模式和OAuth客户端模式。要以API客户端模式调用AppGallery Connect API,您需要在AppGallery Connect中管理您的API客户端。 API客户端只能由您的团队帐户所有者管理。基本过程如下:
A。创建一个API客户端
- 登录AppGallery Connect并选择用户和权限。
- 从左侧导航树中转到 Api密钥> AppGalleryConnect API ,然后单击创建。
- 将“名称”设置为自定义的客户端名称,将角色设置为相应的角色,然后单击“ 确认”。
- 成功创建客户端后,在客户端信息列表中记录 Client ID 和 Key 的值。
B。获取用于访问API的令牌
创建API客户端后,需要在AppGallery Connect中对API客户端进行身份验证。身份验证成功后,API客户端将获得用于访问AppGallery Connect API的访问令牌。使用此访问令牌,您可以访问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;
}
获取访问令牌后,可以在访问AppGallery Connect API时使用该访问令牌进行身份验证。访问令牌的默认有效期为48小时。如果访问令牌过期,则需要获取新的访问令牌。
C。访问API
获取访问令牌后,您可以使用访问令牌来调用AppGallery Connect API以完成功能开发。