网页授权登录
网页用户登录授权可打通帆书账号体系,可以获取到帆书用户的收藏内容,已购内容及用户的个人基本信息。
接入流程为以下三步:
引导用户进入授权页面同意授权,获取code
-
通过code换取授权access_token(与基础支持中的access_token不同)
通过网页授权access_token和client_id获取用户基本信息
1.引导用户进入授权页面同意授权,获取code
用户登录樊登授权网页
HTTP请求方式:get
https://card.dushu365.com/hybrid/auth?responseType=code&clientId=CLIENT_ID&redirectUri=REDIRECT_URI
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
clientId | 是 | 第三方用户唯一凭证,appid |
redirectUri | 是 | 授权后重定向的回调链接地址 |
responseType | 是 | 返回类型,请填写code |
用户同意授权
用户同意授权之后,页面将跳转至 redirect_uri/?code=CODE
code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
错误返回码说明
返回码 | 说明 |
---|---|
3001 | redirect_uri域名与后台配置不一致 |
3002 | 此应用被封禁 |
3003 | redirect_uri不能为空 |
3004 | appid不能为空 |
3005 | 错误的appid |
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 |
样例
正常返回样例
{
"accessToken": "e1f21696-a9a6-4d0d-a8d4-fd8d1c44d7da",
"expiresIn": 7199,
"openid": "ZOGmm-EhjRAu750wR78V1m",
"refreshToken": "9861eb64-3825-424e-bfba-115af5e8ef1b"
}
样例参数说明
参数 | 说明 |
---|---|
accessToken | 获取到的凭证 |
expiresIn | 凭证有效时间(单位:秒) |
openid | 用户唯一标识 |
refreshToken | 刷新的token |
错误返回样例
错误时,返回JSON结果
{
"error": "invalid_client",
"error_description": "Bad client credentials"
}
该错误表明错误为无效的凭证,请检查请求的appId或appSecret的值是否正确。
样例参数说明
参数 | 说明 |
---|---|
error | 错误类型 |
error_description | 错误描述 |
3.通过网页授权access_token和client_id获取用户基本信息
HTTP请求方式:get
access_token:
https://open-platform-test.dushu365.com/sns/userinfo?access_token=ACCESS_TOKEN&client_id=APPID
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 获取到的凭证,即第二步获取到的value |
client_id | 是 | 开发者账号APPID |
样例
正常返回样例
{
"data": {
"feifanVip": ISVIP,
"feifanVipEndTime": VIPENDTIME,
"isVip": ISVIP,
"nickname": NICKNAME,
"headimgurl":HEADIMGURL,
"openid": OPENID,
"vipEndTime": VIPENDTIME
},
"msg": "操作成功!",
"status": "0000",
"systemMsg": "操作成功!",
"systemTime": 1629360296482
}
样例参数说明
参数 | 说明 |
---|---|
openid | 用户唯一标识 |
nickname | 昵称 |
headimgurl | 头像图片地址 |
isVip | 是否是会员 |
vipEndTime | 会期到期时间 |
feifanVip | 是否是非凡会员 |
feifanVipEndTime | 非凡会期到期时间 |
4.通过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 |