第三方账号登录授权
第三方账号登录授权适用于不打通帆书账号体系的情况,通过授权三方id可购买分销商品。
接入流程分为以下两步:
- 通过三方id,获取code
- 通过code换取授权access_token(与基础支持中的access_token不同)
1.通过三方id,获取code
通过三方的用户id获取
HTTP请求方式:post
https://open-platform-test.dushu365.com/user/getCodeByThrid?appid=fd0cac7cd6726d1111&sign=82536892cee554f566a4c45e61b573sad43fc996&access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6WyJBTEwiXSwiZXhwIjoxNTY2fDc2OTQ0LCJqdGkiOiI4NzYxNmMwNC1mMWI3LTRhNWEtYjY1OS05NGIwNWUyZTMwNzQiLCJjbGllbnRfaWQiOiJmZDBjYWM3Y2Q2NzI2ZDIxMWYifQ.K3zwm1NLbYe8KK4JyvueFrCcPnGTrXX1S9PelnOWLCk
参数说明
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
thrid | String | 是 | 三方用户id |
2.通过code换取授权access_token
*与基础支持中的access_token不同
首先请注意,这里通过code换取的是一个特殊的授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。应用可通过下述接口来获取网页授权access_token 和 openid。
尤其注意:由于应用的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续通过access_token获取用户信息等步骤,也必须从服务器发起。
HTTP请求方式:post
https://open-platform-test.dushu365.com/oauth1/fd/token?grant_type=authorization_code&code=CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
client_id | 是 | 第三方用户唯一凭证,即appid |
client_secret | 是 | 第三方用户唯一凭证秘钥,即appSecret |
grant_type | 是 | 填写为authorization_code |
code | 是 | 通过根据第三方id获取的code接口 获取 |
样例
正常返回样例
{
"accessToken": "e1f21696-a9a6-4d0d-a8d4-fd8d1c44d7da",
"expiresIn": 7199,
"openid": "ZOGmm-EhjRAu750wR78V1m",
"refreshToken": "9861eb64-3825-424e-bfba-115af5e8ef1b"
}
样例参数说明
参数 | 说明 |
---|---|
accessToken | 获取到的凭证 (有效期2小时) |
expiresIn | 凭证有效时间(单位:秒) |
openid | 用户唯一标识 |
refreshToken | 刷新的token(有限期30天) |
错误返回样例
错误时,返回JSON结果
{
"error": "invalid_client",
"error_description": "Bad client credentials"
}
该错误表明错误为无效的凭证,请检查请求的appId或appSecret的值是否正确。
样例参数说明
参数 | 说明 |
---|---|
error | 错误类型 |
error_description | 错误描述 |
3.通过refreshToken刷新access_token
HTTP请求方式:post
https://open-platform-test.dushu365.com/oauth1/fd/token?grant_type=refresh_token&refresh_token=94bc3507-e7ee-4708-b1b1-0c2f03dccb7d&client_id=xxxx
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
client_id | 是 | 第三方用户唯一凭证,即appid |
refresh_token | 是 | 第二步获取的refresh_token |
grant_type | 是 | 填写为refresh_token |
样例
正常返回样例
{
"accessToken": "e1f21696-a9a6-4d0d-a8d4-fd8d1c44d7da",
"expiresIn": 7199,
"openid": "ZOGmm-EhjRAu750wR78V1m",
"refreshToken": "9861eb64-3825-424e-bfba-115af5e8ef1b"
}
样例参数说明
参数 | 说明 |
---|---|
accessToken | 获取到的凭证 |
expiresIn | 凭证有效时间(单位:秒) |
openid | 用户唯一标识 |
refreshToken | 刷新的token |