跳到主要内容

登录授权

授权登录

DeBox授权登录是基于OAuth2.0 协议标准构建的登录系统。

注意

目前安卓1.8.18、ios1.5.2以上版本支持DeBox App内授权,
DeBox网页端只支持登录授权,暂不支持支付授权

技术支持

欢迎加入技术支持群:https://m.debox.pro/group?id=cc0onr82

在进行授权登录接入之前,
请您前往 DeBox开放平台,申请获取DApp的 App ID 和 App Key
成功申请后,可开始登录接入流程。

授权登录逻辑

DeBox OAuth2.0 授权登录让用户使用DeBox身份安全登录第三方应用或网站,在用户授权登录已接入DeBox OAuth2.0 的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过 access_token 可以进行DeBox开放平台授权关系接口调用,从而可实现获取DeBox用户基本开放信息和帮助用户实现基础开放功能等。

DeBox OAuth2.0 授权登录目前支持 authorization_code 模式,适用于拥有 server 端的应用授权。该模式整体流程为:

  1. 第三方发起DeBox授权登录请求,DeBox用户允许授权第三方应用后,DeBox会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
  2. 通过code参数加上app_id和app_secret等,通过API换取access_token;
  3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

DeBox授权登录的交互逻辑如下图:

Docs Version Dropdown

授权登录流程及示例

第一步,请求code

参数是否必须说明
redirect_uri授权成功后的回调地址。当用户点击授权后,app会将获得的code作为参数回调该地址
app_id应用唯一标识,DeBox开放平台申请
grant_type表示授权方式是授权码:authorization_code
scope授权域:payment代表支付授权 moment代表打赏消息授权
# 调⽤请求示例
curl --location --request GET 'https://app.debox.pro/oauth/authorize?
redirect_uri=http://dapp_url&app_id=xxxxxx&grant_type=authorization_code&
scope=moment
返回说明
用户点击授权后,跳转至授权界面,用户在该界面点击允许或取消,
用户允许授权后,页面会跳转到重定向地址,并携带 code & userId & sourse
常见问题
- 授权成功后,在App端能进入redirect_uri页面,但在web端浏览器上一直initialization转圈?
- 授权成功后,为何没有跳转到redirect_uri?

请参考 DeBox API Q&A

第二步,通过 code 获取 access_token

获取第一步的 code 后,请求以下链接获取 access_token:

参数是否必须说明
app_secret应用密钥 AppSecret,DeBox开放平台申请
app_id应用唯一标识,DeBox开放平台申请
grant_type表示授权方式为授权码:authorization_code
code第一步的 code
user_id用户ID
# 调用请求示例
curl --location --request GET
https://open.debox.pro/openapi/oauth2/access_token?
grant_type=authorization_code&code=ZDY5ZTA......FRE5
&app_id=xxxxxx&app_secret=xxxxxx&user_id=xxxxxx
返回成功结果
{
"code": 1,
"data": {
"access_token":
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODgzOTQ4MDMsInN1YiI6IjEwMzA1O
CJ9.hbEt8JthQvo85iGkhUiPpTlcII4n3hgOYDErUDS9X2kkOnsNM27pAO_x9WP4KEE_33uFEd6GOgS
A51MlYZakb1",
"expires_in": 1,
"refresh_token": "MDBMOWYZYWYTZMRLYS01ODRHLWJKYTUTZGFIMMU1ZDEZNWM3",
"token_type": ""
},
"message": "success",
"success": true
}
返回失败结果
{ 
"code": 401,
"message": "Bad Request",
"success": false
}

另,刷新access_token

# 调⽤请求示例
curl --location --request GET
https://open.debox.pro/openapi/oauth2/refresh_token?
grant_type=refresh_token&refresh_token=YTNMYMZJZMY......ZTAH
&app_id=xxxxxx&app_secret=xxxxxx&user_id=xxxxxx
返回成功结果

{
"code": 1,
"data": {
"access_token":
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODgzOTQ4MDMsInN1YiI6IjEwMzA1O
CJ9.hbEt8JthQvo85iGkhUiPpTlcII4n3hgOYDErUDS9X2kkOnsNM27pAO_x9WP4KEE_33uFEd6GOgS
A51MlYZakbg",
"expires_in": 1,
"refresh_token": "MDBMOWYZYWYTZMRLYS01ODRHLWJKYTUTZGFIMMU1ZDEZNWM3",
"token_type": ""
},
"message": "success",
"success": true
}
返回失败结果
{
"code": 401,
"message": "Bad Request",
"success": false
}

时效性说明

第⼀步: 获取临时code (有效期5分钟)
第⼆步:通过code换取 access_token (有效期2⼩时) refresh_token (有效期7天)
token过期:通过refresh_token 刷新access_token (有效期2⼩时)

授权登录错误码

-2001 ⽤户登录有效性问题,可尝试重新登录
-2004 参数不合法
-2006 交易参数不合法
-2010 获取access token,code过期
-2011 获取access token,无效code
-2012 刷新access token失败
-2013 access token过期

F.A.Q

什么是授权临时票据(code)?

答:第三方通过code进行获取access_token的时候需要用到,code的超时时间为5分钟,一个code只能成功换取一次access_token即失效。code的临时性和一次性保障了DeBox授权登录的安全性。

2. 什么是授权作用域(scope)?

答:授权作用域(scope)代表用户授权给第三方的接口权限。