JDC 的 ACCESS_TOKEN 授权流程
这里统一为JDC授权流程。最近在对接国外版的天猫和京东,在对接API直接,授权需要token的获取。像LAZADA,Shopee,和JD Central 这三家的接口,其token的授权流程类似,这里统一记录一下。
授权文档地址
https://jos.jd.co.th/home/home#/doc/common/77
基本流程:
- 链接平台地址,携带上必要的参数以及重定向地址。
- 平台会返回302响应,将浏览器重定向到商家登录授权页面。
- 商家登录授权后,平台会返回301重定向到1上的重定向地址,并返回code参数
- 应用接受到code参数,并根据已有的appKey和AppSecret参数去获取token
- 根据上一步返回的refresh_token,可以进行token刷新。
流程图:
步骤分析:
第一步:连接平台地址
https://oauth.jd.co.th/oauth2/to_login?app_key=xxxx&response_type=code&redirect_uri=xxxx&state=20200428&scope=snsapi_base
参数说明:
- app_key: 需要从应用后台获取。
- response_type:响应类型,固定值为code。
- redirect_uri:重定向地址。商家登录成功之后,平台需要重定向的地址,携带平台给的code。
- scope:作用域,snsapi_base|snsapi_union_login
- state:用于维护请求和回调的状态。也可以用来传递参数。
第二步:平台重定向商家授权页面
如果已经登录过,就是这样的。
第三步:重定向地址。
当商家登录授权成功后,平台会将浏览器重定向到第一步中的redirect_url上,并添加两个参数。
redirect_uri? code = CODE & state = STATE
第四步:接受code并进行token获取。
在redirect_uri上,我们可以接收到code和state两个参数。此时我们就可以通过他们去平台获取token。
https://oauth.jd.co.th/oauth2/access_token?app_key=xxxx&app_secret=xxxxxx&grant_type=authorization_code&code=xxxx
参数描述:
- app_key: 通过应用后台获取。
- app_secret: 通过应用后台获取。
- grant_type:固定值为authorization_code
- code:code就是我们第三步接受到的code参数。
此时我们就可以拿到token响应了。响应示例如下:
{
access_token: "a3207b6b5ad04249ad1dbf6a98248bea",
expires_in: 3600000,
refresh_token: "4ecbbab0e9e443159c518da1d10741ad",
scope: "snsapi_base",
open_id: "jos_dev"
}
响应参数描述:
- access_token : api接口的访问令牌。
- expires_in:access_token 的失效时间。单位为秒。
- refresh_token: 刷新token是用来延迟token失效的一种方式。refresh_token在一个月内,只能调用500次。
- scope:用户认证的作用域。
- open_id:认证用户的id。
第四步:刷新token。
刷新token:
https://oauth.jd.co.th/oauth2/refresh_token?app_key=XXXXX&app_secret=XXXXX&grant_type=refresh_token&refresh_token=XXXXX
刷新token的参数列表描述:
- app_key: 通过应用后台获取
- app_secret: 通过应用后台获取
- grant_type: 固定值为refresh_token
- refresh_token:刷新token值就是第三步中获取到的。
刷新token接口的响应:
{
access_token: "a3207b6b5ad04249ad1dbf6a98248bea",
expires_in: 3600000,
refresh_token: "4ecbbab0e9e443159c518da1d10741ad",
scope: "snsapi_base",
open_id: "xxxxxxxxxxxxxxxxxxx"
}
JDC的刷新token是不会将原有token更新的,即只是延长token的有效时间。与lazada的不同。