文档列表
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
可自由调用的数据接口