授权模式--authorization code

授权模式-authorization code

      一.模式简介:

           authorization code模式:一般被称为"授权码模式",是指第三方应用打开货拉拉授权页面。由用户在页面进行登录授权操作。授权成功后,货拉拉授权认证服务将给予第三方应用使用用户货拉拉账户的权限令牌

           该模式为oauth2.0授权标准内功能最完整,流程最严密的授权模式。需调用的接口需要传入“用户账户访问令牌码access_token”。code保证了token的安全性,即使code被拦截,由于没有app_secret,也无法通过code获取到token。就是第三方应用程序请求认证授权服务器来获取AccessToken之前的预先校验,增加了获取token的安全性。授权码方式是OAuth2.0最常用的一种授权方式,比如:QQ,豆瓣,新浪微博等用的都是这种方式。


      二.适用对象:

           所有需接入货拉拉开放平台的合作商。包括但不限于:第三方平台,ISV软件开发商,企业自用车等


      三.支持以下方式获取账户访问令牌access_token:

            货拉拉开放服务平台的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.第三方应用采用拼接参数的形式,外调浏览器打开货拉拉授权页面

       拼接示例:
https://open.huolala.cn/#/oauth/authorize?response_type=code&client_id=第三方应用app_key&redirect_uri=开发者授权回调地址&auth_mobile=用于填充授权页面输入框的货拉拉账户

                

            

             2.货拉拉用户,在授权页面完成登录授权。  

                 

             3.货拉拉用户在允许授权第三方应用后,货拉拉认证服务会拉起应用或重定向到第三方应用网站并且带上授权临时票据code参数。

                   如上图页面,若用户点“登录按钮后,页面会跳转到指定的redirect_uri并多添加两个参数codestate参数,应用可以获取并使用该code去换取access_token

         重定向示例:
         redirect_uri?code=CODE值

             4.第三方应用通过code参数加上app_key和app_secret通过API换取access_token。参数说明:

         拼接示例:
https://open.huolala.cn/oauth/token?grant_type=authorization_code&client_id=第三方应用app_key&code=上一步授权回调地址中获取到的code码

                    

                

                   换取access_token返回值示例 

                   

             5.通过access_token进行接口调用获取用户基本数据资源或帮助用户实现基本操作

            

        五. Refreshing an Access Token 流程概述   

             通过上述两种流程,获取了access_token以及refresh_token,但是一般来讲,access_token都有一定的有效期(有效期请参考第七步流程中expire_in参数),在刷新有效时长内必须通过 refresh_token调用API 来延迟 access_token的时长。根据刷新令牌获取访问令牌参数如下:      

        拼接示例:
https://open.huolala.cn/oauth/token?grant_type=refresh_token&client_id=第三方应用app_key&refresh_token=上一步获取的refresh_token值

                 

                 刷新access_token有效期时长返回值示例 

                

         刷新access_token有效期时长操作成功后,access_token不变,refresh_token更新,详情以接口返回值为准