管理平台

Token过期处置



一、 背景

有些开发者因为Token过期前没有及时刷新导致应用无法正常使用,影响了商家的业务正常运行。针对这个问题,整理一下相关的指导文档帮助开发者开发时尽量规避。

 

二、Token的有效时长及重点关注事项

     各应用类型的授权有效时长如下:

应用类型

 正式测试环境

上线运行中

 备注

在服务市场上售卖的应用

 24

 订购时长绑定

 如应用上线后,用户订购1年,则Token有效1年。更详细说明参考这里

其它类应用

 24小时

 1


 

重点关注事项:

l  正式环境测试阶段,Token有效时长固定24小时,无法提高,失效后需重新授权;

l  在服务市场上售卖的应用,当应用发布上线后(需审核)Token有效时长会自动提高(和订购时长一致);

 

三、 开发最佳实践

1、 先了解授权服务开发文档

http://open.jd.com/home/home#/doc/common?listId=717

2、 获取access_token的到期时间后保存到数据库

授权返回结果示例:

{

"access_token": "83b5969*******58af8dd*******",

"expires_in": 86399, 

"refresh_token": "0fc29a2*******0c436f*********",

"scope": "snsapi_base",

"open_id": "hUJrM***********Xk2velNE7EZ4e*****************570",

"uid": "062655****",

"time": 1555477739422,

"token_type": "bearer",

"code": 0

}

注:expires_in参数值为令牌有效时间, 单位秒

 

当返回授权后的access_token信息后,应用程序应记录下“用户的授权到期时间”到数数据库,与用户的唯一ID“open_id”关联, “用户的授权到期时间”=当前日期时间+ “expires_in”参数值

 

3、 定期处理即将过期的Token

1)      在服务市场上售卖的应用

商家订购的应用即将到期前,服务市场系统会通知商家进行续订操作;

开发者也请通过应用提前及时通知到用户,提醒进行续订操作。

2)      其它类应用

方案一:(推荐使用)

              在access_token即将过期时,利用程序自动通过刷新access_token接口进行刷新token。https://open-oauth.jd.com/oauth2/refresh_token?app_key=XXXXX&app_secret=XXXXX&grant_type=refresh_token&refresh_token=XXXX

 

方案二:(需要人工处理)

a)      授权管理页面

建立已授权的店铺列表,包括名称、appkey、到期时间、操作等信息。

            “获取授权地址URL”:点击后根据appkey情况拼接获取code地址,类似这个https://open-oauth.jd.com/oauth2/to_login?app_key=XXXXX&response_type=code&redirect_uri=XXXXX&state=20180416&scope=snsapi_base,打开后用店铺的帐号密码登录后即可在URL上获取到code

             更新授权信息”:点击后弹出页面填写获取到code,然后点击保存则调用获取Token接口进行更新;如果未填写code且当成Token还未过期,则调用更新Token接口进行更新操作即可;

b)      预警设置

设计参考如下:“新增”点击后弹出填写预警到的人员的手机号码和Email;通过可进行修改和删除


c)       及时提醒

系统自动每天监控即将到期的店铺信息进行发送短信和邮件提醒,建议提前15天、7天、5天、3天、1天进行通知,以免导致没有提前更新Token导致业务受影响。

4、 帐号修改密码后的Token失效处理

程序调用接口时报异常错误时,请设置监控告警设置,提醒相关的技术运维人员,运维人员收到通知后及时通知相关人员进行更新Token操作。异常错误信息类似这个:“Token已过期或者不存在,请重新授权”。




基础API

可自由调用的数据接口