认证

进行身份验证才能使用Qbit的API资源。

授权流程

Qbit使用 OAuth 2.0 的授权码流程 (opens new window)颁发访问令牌。

     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

获取code

GET 获取 code

/open-api/oauth/authorize

请求示例:

curl -X GET \
  'https://global.service.staging.qbitnetwork.com/open-api/oauth/authorize?clientId=qbit1ccf1b8c069b41f4&state=abc' \
	-H 'Content-Type: application/json'
1
2
3

GET 请求参数:

字段 类型 是否为必填 说明
clientId string client id
state string 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
redirectUri string 授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理

返回参数:

字段 类型 说明
timestamp number 接口响应时间戳
state string state参数
code string code作为换取access token的票据, code只能使用一次, 10分钟未被使用自动过期

返回示例:

{
  "timestamp": 1634525629,
  "state": "abc",
  "code": "485b1505becf1d0815c8f1598cc2783b"
}
1
2
3
4
5

获取access token

POST 获取 access token

/open-api/oauth/access-token

POST 请求参数:

字段 类型 是否为必填 说明
clientId string client id
clientSecret string client secret
code string code

返回参数:

字段 类型 说明
accessToken string 接口调用凭证
refreshToken string 刷新accessToken(有效期为30天,当refresh token失效之后,需要重新授权)
expiresIn number 凭证有效时间,单位:秒
timestamp number 接口响应时间戳

请求示例:

curl -X POST \
  'https://global.service.staging.qbitnetwork.com/open-api/oauth/access-token' \
	-H 'Content-Type: application/json'
	-d '{
	  "clientId": "qbit1ccf1b8c069b41f4",
	  "clientSecret": "25d55ad283aa400af464c76d713c07ad",
	  "code": "485b1505becf1d0815c8f1598cc2783b"
	}'
1
2
3
4
5
6
7
8

返回示例:

{
  "accessToken": "2a4d1961d9f031fa7ca4cbe62bd107e3688ae58b",
  "refreshToken": "5ac85c84fd5bb94c12fc7f6882606849d301a7a8",
  "expiresIn": 86400,
  "timestamp": 1634525844
}
1
2
3
4
5
6

刷新access token

POST 刷新 access token

/open-api/oauth/refresh-token

POST 请求参数:

字段 类型 是否为必填 说明
clientId string client id
refreshToken string 填写通过access-token获取到的refreshToken参数

返回参数:

字段 类型 说明
accessToken string 接口调用凭证
expiresIn number 凭证有效时间,单位:秒
timestamp number 接口响应时间戳

请求示例:

curl -X POST \
  'https://global.service.staging.qbitnetwork.com/open-api/oauth/refresh-token' \
	-H 'Content-Type: application/json'
	-d '{
	  "clientId": "qbit1ccf1b8c069b41f4",
	  "refreshToken": "49ed2e1f16628456d9f8a9da6c300b85057260e46ce5da0e500144e903d46cd4"
	}'
1
2
3
4
5
6
7

返回示例:

{
  "accessToken": "db19fa75f4ed674135e26965173ff66f722684bb",
  "expiresIn": 86400,
  "timestamp": 1634545423
}
1
2
3
4
5