授权流程(软件服务商)
1.获取授权码(code);
组装格式:
https://ark.xiaohongshu.com/ark/authorization?appId=xxx&redirectUri=xxx&state=xxx
组装示例:
https://ark.xiaohongshu.com/ark/authorization?appId=4b6*******672e4c9a&redirectUri=http%3A%2F%2Fwww.xiaohongshu.com&state=1234
授权页组装参数如下
参数名称 | 是否必选 | 示例值 | 参数释义 |
---|---|---|---|
appId | 必选 | - | 第三方使用小红书开放平台的appId |
redirectUri | 必选 | http%3A%2F%2Fwww.xiaohongshu.com | 授权后回调地址字段值,在用户完成授权后,code值将回调至该地址中 |
state | 可选 | 1234 | 标识位,返回时将原值返回,可用于标识商家 |
引导用户跳转到授权页面后会判断当前商家主账号是否登录,若登录则点击直接授权,若未登录则登录后再跳转授权。
注意事项:
1)店铺类型及账号限制:只允许店铺主账号才可以授权成功。
2)允许重复授权,在code有效期内重复授权获取到到code不变,在上一次code失效后重复授权会导致之前所有生成的code,accessToken,refreshToken失效。
3)允许取消授权:授权应用后,可以在账号应用管理处查看授权应用信息,并取消授权
用户完成「授权登录」后,授权码code将返回到回调地址中,以参数code形式组装至回调地址中,应用可以获取并使用该code去换取accessToken。
注意事项:code有效期10分钟,10分钟后code过期则需要重新授权,短时间内多次使用code换取accessToken是一样的,返回数据展示如下
返回code:
https://{回调地址redirectUri}/?code=74afa4f59c404***089e9db87797d6cc&state=1234
2.获取访问令牌(accessToken)
HTTP:
https://ark.xiaohongshu.com/ark/open_api/v3/common_controller
body参数说明
参数名称 | 是否必选 | 示例值 | 参数释义 |
---|---|---|---|
appId | 必选 | 21d600****be8de0 | 第三方使用小红书开放平台的appId |
version | 必选 | 2.0 | 网关版本判定参数目前授权流程使用2.0 |
sign | 必选 | 867105****e77ff0bafb0 | 输入参数的签名结果,签名方法参见sign签名算法 |
timestamp | 必选 | 1612239430773 | 接口调用时的时间戳 |
method | 必选 | oauth.getAccessToken | 调用具体方法 |
方法参数说明
参数名称 | 是否必选 | 示例值 | 参数释义 |
---|---|---|---|
code | 必选 | code-9e2*****f3b32 | 授权code |
请求示例
{
"sign":"6a76602***68400",
"appId":"21d***be8de0",
"timestamp":"161***379",
"version":"2.0",
"method":"oauth.getAccessToken",
"code":"code-9e28279***e6035dc686e0-7aaea***841f3b32"
}
响应参数说明
参数名称 | 示例值 | 参数释义 |
---|---|---|
accessToken | 21d600****be8de0 | 访问令牌 |
accessTokenExpiresAt | 1612239430773 | 访问令牌过期时间(ms) |
refreshToken | 867105****e77ff0bafb0 | 刷新令牌 |
refreshTokenExpiresAt | 1612239430773 | 刷新令牌过期时间(ms) |
sellerId | 5a151****ee832 | 商家编码 |
sellerName | 开放平台测试店1专卖店 | 商家名 |
响应示例
{
"error_code": 0,
"data": {
"accessToken": "token-2d22cd***3c1b55bc7-e83e919***a3504b398",
"accessTokenExpiresAt": 1613807389260,
"refreshToken": "refresh-72df8ba***7e1387407ac-944badaf***268294df5ae1",
"refreshTokenExpiresAt": 1616312989263,
"sellerId": 5a1***76ee832,
"sellerName": "开放平台测试店1专卖店"
},
"success": true
}
注意事项:
1)accessToken有效期为7天,refreshToken有效时间为14天
2)accessToken未过期且剩余有效时间大于30分钟,使用refreshToken进行刷新后accessToken和refreshToken均不会刷新
3)accessToken未过期且剩余有效时间小于30分钟,使用refreshToken进行刷新后会得到新的accessToken和refreshToken,且旧accessToken有效期为5分钟
4)accessToken过期后使用refreshToken进行刷新后会得到新的accessToken和refreshToken
5)refreshToken过期后需要通过用户重新授权
6)获取accessToken和刷新accessToken的参数均通过body传输
7)后续所有业务接口的url和获取token的url保持一致
3.刷新访问令牌
HTTP:
https://ark.xiaohongshu.com/ark/open_api/v3/common_controller
公共参数说明
参数名称 | 是否必选 | 示例值 | 参数释义 |
---|---|---|---|
appId | 必选 | 21d600****be8de0 | 第三方使用小红书开放平台的appId |
version | 必选 | 2.0 | 网关版本判定参数目前授权流程使用2.0 |
sign | 必选 | 867105****e77ff0bafb0 | 输入参数的签名结果,签名方法参见sign签名算法 |
timestamp | 必选 | 1612239430773 | 接口调用时的时间戳 |
method | 必选 | oauth.refreshToken | 调用具体方法 |
方法参数说明
参数名称 | 是否必选 | 示例值 | 参数释义 |
---|---|---|---|
refreshToken | 必选 | refresh-abe******9c2b9f9 | 用于刷新的refreshToken |
请求示例
{
"sign":"6a76602***46ee68400",
"appId":"21d6***8de0",
"timestamp":"161***8379",
"version":"2.0",
"method":"oauth.refreshToken",
"refreshToken":"refresh-06ca049***b77ac4493697-3251618c7***ebfffd7e"
}
响应参数说明
参数名称 | 示例值 | 参数释义 |
---|---|---|
accessToken | 21d600****be8de0 | 刷新后的访问令牌 |
accessTokenExpiresAt | 1612239430773 | 访问令牌过期时间(ms) |
refreshToken | 867105****e77ff0bafb0 | 刷新后的刷新令牌 |
refreshTokenExpiresAt | 1612239430773 | 刷新令牌过期时间(ms) |
sellerId | 5a151****ee832 | 商家编码 |
sellerName | 开放平台测试店1专卖店 | 商家名 |
响应示例
{
"error_code": 0,
"data": {
"accessToken": "token-e643e958****da68398a-572e65****24c3f922",
"accessTokenExpiresAt": 1613807628007,
"refreshToken": "refresh-72df8ba****e1387407ac-944bad****94df5ae1",
"refreshTokenExpiresAt": 1616312989262,
"sellerId": 5a151****12e76ee832,
"sellerName": "开放平台测试店1专卖店"
},
"success": true
}
注意事项:
1)accessToken有效期为7天,refreshToken有效时间为14天
2)accessToken未过期且剩余有效时间大于30分钟,使用refreshToken进行刷新后accessToken和refreshToken均不会刷新
3)accessToken未过期且剩余有效时间小于30分钟,使用refreshToken进行刷新后会得到新的accessToken和refreshToken,且旧accessToken有效期变为5分钟
4)accessToken过期后使用refreshToken进行刷新后会得到新的accessToken和refreshToken
5)refreshToken过期后需要通过用户重新授权
6)获取accessToken和刷新accessToken的参数均通过body传输
7)后续所有业务接口的url和刷新token的url保持一致
最后修改时间: 1 年前