华为AppGallery Connect API-403客户端令牌授权失败

问题描述

我正在尝试使用链接中提到的REST API将应用发布过程自动化到华为商店。 https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agcapi-overview

我成功收到访问令牌,但是其他操作(例如:获取应用程序信息,获取上传URL)失败,并显示以下状态代码错误消息。

403 client token authorization fail.

我没有编写任何代码,我只使用下面的示例代码并更新了clientId,clientSecret,appId。

https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Examples/agcapi-publish_api_code

出什么问题了?有人可以帮忙吗?

解决方法

如本comment中所述,一旦我将项目设置为NA,它便开始工作。

感谢@shirley

,

更新

  • 项目设置为 N / A ,以将API客户端定义为团队级别的客户端。
  • 角色设置为管理员
  1. 请检查您的客户角色是否为管理员

成员的角色确定AppGallery Connect中的权限。管理员具有大多数操作权限,可以添加成员帐户并为其分配权限。有关角色和权限之间的映射的详细信息,请参阅Roles and Permissions

  1. 使用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 的值。

检查以下屏幕截图: client information

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以完成功能开发。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...