文档管理中心

获取应用级Token

功能介绍

“应用级”的含义是该access_token可以代表应用的身份来访问服务API,不能够代表用户的身份,无法访问用户个人信息有关的服务API。

使用注意事项

在应用级access_token快过期的时候,重新调用该接口获取新的access_token。

接口原型

承载协议

HTTPS POST

接口方向

服务商服务器 -> 华为服务器

接口URL

https://oauth-login.cloud.huawei.com/oauth2/agent/v1/client-token

数据格式

请求:Content-Type: application/json

响应:Content-Type: application/json

请求参数

Header

展开

参数

必选(M)/可选(O)

类型

说明

x-client-id

M

String

商家的client_id。

前往授权信息页面点击“更多”获取的“授权应用ClientID”,详情请参见查看授权信息。

x-agent-client-id

M

String

服务商的client_id。

创建第三方平台时由服务商主动创建的服务账号ID,可在第三方管理平台“开发配置 > 开发资料设置”页面中创建/查询,详情请参见获取应用访问凭据。

Body

展开

参数

必选(M)/可选(O)

类型

说明

grant_type

M

String

固定为client_credentials。

client_assertion_type

M

String

固定为 "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"。

client_assertion

M

String

服务商生成的JWT。

其中,client_assertion是一个JSON Web Token(JWT)。

说明

JWT是一个开放标准(RFC 7519),定义了一种安全传输信息的方法,具体请参见jwt.io。

JWT由Header、Payload和Signature三部分拼接组成,三部分中间以“.”号分隔,例如:xxxx.yyyy.zzzz。

服务商可以依据Header中指定算法以及使用创建凭据下载的json文件内密钥ID关联的私钥(即json凭据文件中private_key)进行签名生成JWT。

JWT Header

展开

参数

必选(M)/可选(O)

类型

说明

alg

M

String

算法类型,固定为PS256。

typ

M

String

Token类型,固定为JWT。

kid

M

String

密钥ID。即json凭据文件中key_id。

JWT Payload

展开

参数

必选(M)/可选(O)

类型

说明

iss

M

String

服务商的client_id。

创建第三方平台时由服务商主动创建的服务账号ID,可在第三方管理平台“开发配置 > 开发资料设置”页面中创建/查询,详情请参见获取应用访问凭据。

sub

M

String

商家的client_id。

aud

M

String

固定为"https://oauth-login.cloud.huawei.com/oauth2/agent/token"。

iat

M

Integer

生成时间,linux时间戳。

exp

M

Integer

过期时间,linux时间戳。

请求示例

POST /oauth2/agent/v1/client-token HTTP/1.1
Host: oauth-login.cloud.huawei.com
x-client-id: 12345000
x-agent-client-id: 12345666
Content-Type: application/json
 
{
    "grant_type": "client_credentials",
    "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
    "client_assertion": "xxxx.yyyy.zzzz"
}

响应参数

返回值为JSON格式的字符串,包含参数如下。

展开

字段名

类型

说明

access_token

String

应用级access_token。

token_type

String

固定值Bearer。

expires_in

Integer

access_token的过期时间,以秒为单位。过期时间默认60分钟。

响应示例

成功:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
 
{
    "access_token": "CFyJ7eTl8WIxxxxxjk1EA==",
    "expires_in": 3600,
    "token_type": "Bearer"
}

失败:

失败返回的httpstatus=400,在body中返回错误码和描述,json格式。

例如:

HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
 
{
    "error": 20916,
    "error_description": "client_assertion jwt signature error"
}

错误码

展开

错误码

描述

解决方法

20181

grant_type为空

  1. 这些错误码属于参数错误,不要重试调用
  2. 这些错误通常在调测阶段就可发现,建议业务方排查代码或配置项

20182

grant_type值不正确

20001

商家client_id为空

20002

商家client_id格式不对

20003

商家client_id在系统不存在

20900

服务商client_id为空

20901

服务商client_id格式不对

20902

服务商client_id在系统不存在

20903

服务商client_id和商家client_id无代理关系

20910

client_assertion_type的值不对

20911

client_assertion没有值

20912

client_assertion的值不满足基本格式校验

20913

client_assertion中iss和请求头x-agent-client-id不一致

20914

client_assertion中sub和请求头x-client-id不一致

20915

client_assertion过期

20916

client_assertion签名校验未通过

57301

ip is overload blocked

被流控,请排查是否有异常调用

57300

ip is in blacklist

57302

appid is in blacklist

57303

appid is overload blocked

其他错误码

其他错误,服务器内部错误。

  1. 建议进行重试调用,可能会成功
  2. 除了上面列出的错误码,其他错误码都算到这个分支里