授权说明(暂未上线)
一.为什么要授权?
如果您的应用需要获取“货拉拉用户账户”隐私数据(如订单信息,下单),为保证用户数据的安全与隐私,您的应用需要取得货拉拉用户的授权,即获取访问用户账户数据的授权令牌 access_token。
二.是否一定要授权?
开发者应用,如果需要调用"需access_token”的接口,则必须进行授权操作。否则,无需进行授权操作
三.授权前提?
1.已入驻成为货拉拉开放平台开发者
2.已拥有一个处于“已上线”状态的应用,并获取到应用app_key,app_secret信息
四.名词解释?
app_key:AppKey是创建应用时,开放平台分配给应用的的标识,用以鉴别应用的身份
app_secret:是货拉拉开放平台给应用分配的密钥,开发者需要妥善保存这个密钥,这个密钥用来保证应用来源的可靠性,防止被伪造
access_token:Access Token即用户货拉拉账户的访问凭证,一般需要货拉拉用户同意后进行颁发。它代表了用户授予应用访问用户货拉拉账号上特定资源的权限
refresh_token: Refresh_token的作用是刷新AccessToken。认证服务器会提供一个刷新接口,我们传入Refresh_token和app_key,认证服务器通过后会返回一个新的AccessToken
expire_time:代表了上述访问凭证的过期时间。
五.授权标准?
货拉拉开放平台授权系统是基于OAuth2.0协议标准构建的授权系统.支持货拉拉开放网关接口授权调用
授权码模式(authorization code):此模式为oauth2.0授权标准内功能最完整,流程最严密的授权模式。需调用的接口需要传入“用户账户访问令牌码access_token”。code保证了token的安全性,即使code被拦截,由于没有app_secret,也无法通过code获取到token
密码模式(passwd):此模式相对于授权码模式而言,安全性较低。暂时只允许国家行政机关,事业单位进行调用
六.支持授权场景?
货拉拉开放服务平台的OAuth2.0中约定Access Token有效期为3个月。目前,支持以下方式获取Access Token :
(1)Server-side flow 此流程要求ISV和商家应用有Web Server,能够保持应用本身的密钥以及状态,可以直接访问货拉拉的授权服务器。
(2)Native Application 此流程适合ISV没有自己的web服务器,且应用为原生程序,即客户端应用(同时应用无法与浏览器交互,但是可以外调用浏览器)。
(3)Refreshing an Access Token 通过前两种流程,获取了Access token以及Rrfresh token(刷新令牌,对于具有“获取Refresh token权限”的应用),Access token都有一定的期限,当Access token过期时,用户可以用Refresh token获得一个Access token。
七.Server-side flow流程概述
此流程要求应用有Web Server,能够保持应用本身的密钥以及状态,可以通过https直接访问货拉拉的授权服务器。如下图所示
该流程总体步骤如下:
1.第三方拼接参数的形式,发起授权请求, 打开货拉拉授权页面,参数如下:
2.货拉拉用户,在授权页面完成登录授权。
3.货拉拉用户在允许授权第三方应用后,货拉拉认证服务会拉起应用或重定向到第三方应用网站, 并且带上授权临时票据code参数。
如上图页面,若用户点“登录”按钮后,页面会跳转到指定的redirect_uri并多添加两个参数code和state参数,应用可以获取并使用该code去换取access_token;
重定向示例:
redirect_uri?code=CODE&state=STATE
4.第三方应用通过code参数加上app_key和app_secret等, 通过API换取access_token。参数说明:
换取access_token返回值示例
{
"ret":0,
"msg":"success",
"data":{
"auth_mobile":"14716866598", //授权用户手机
"access_token":"a3207b6b5ad04249ad1dbf6a98248bea", //授权货拉拉账户访问令牌
"refresh_token":"4ecbbab0e9e443159c518da1d10741ad", //刷新令牌
"auth_end_time":"2020-06-07 15:35:08" //访问令牌有效期截止时间
}
}
5.通过access_token进行接口调用, 获取用户基本数据资源或帮助用户实现基本操作
八. Refreshing an Access Token 流程概述
通过上述两种流程,获取了access_token以及refresh_token,但是一般来讲,access_token都有一定的有效期(有效期请参考第七步流程中expire_in参数),在刷新有效时长内必须通过
refresh_token调用API 来延迟
access_token的时长。根据刷新令牌获取访问令牌参数如下:
刷新access_token有效期时长返回值示例
{
"ret":0,
"msg":"success",
"data":{
"auth_mobile":"14716866598", //授权用户手机
"access_token":"sdeewd0659adeebf6ew8bea", //授权货拉拉账户访问令牌
"refresh_token":"etr3dr344esd8da1d10741ad", //刷新令牌
"auth_end_time":"2020-06-07 15:35:08" //访问令牌有效期截止时间
}
}
刷新access_token有效期时长操作成功后,access_token,refresh_token更新,详情以接口返回值为准