基于AccessToken方式实现API设计
Posted kevin-ying
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于AccessToken方式实现API设计相关的知识,希望对你有一定的参考价值。
一、举例说明:
需求:
A、B机构需要调用X服务器的接口,那么X服务器就需要提供开放的外网访问接口。
分析:
1、开放平台提供者X,为每一个合作机构提供对应的appid、app_secret。
2、appid是唯一的(不能改变),表示对应的第三方合作机构,用来区分不同机构的。
3、app_secret在传输中实现加密功能(秘钥),该秘钥可以发生改变的。
4、为什么app_secret是可以改变的?调用接口需要appid+app_secret生成对应的access_token(临时性),如果appid和app_secret被泄密,产生安全性问题,如果一但发现被泄密,可以重新生成一个app_secret。
原理:为每个合作机构创建对应的appid、app_secret,生成对应的access_token(有效期2小时),在调用外网开放接口的时候,必须传递有效的access_token。
二、开发步骤
1、使用appid+app_secret生成对应的access_token
1.获取生成的AppId和appSecret,并验证是否可用
2.删除之前的accessToken
2.AppId和appSecret保证生成对应唯一的accessToken
注意:以上第二步必须保证在同一事务中
3.返回最新的accessToken
2、使用accessToken调用第三方接口
1.获取对应的accessToken
2.使用AccessToken查询redis对应的value(appId)
3.如果没有获取到对应的appid,直接返回错误提示
4.如果能获取到对应的appid,使用appid查询对应的APP信息
5.使用appId查询数据库app信息,获取is_flag状态,如果为1,则不能调用接口,否则正常执行
6.直接调用接口业务
以上是关于基于AccessToken方式实现API设计的主要内容,如果未能解决你的问题,请参考以下文章
基于Node的PetShop,oauth2认证RESTful API
API开放接⼝设计之appId,appSecret,accessToken(同微信开发平台接⼝)
API 面试四连杀:接口如何设计?安全如何保证?签名如何实现?防重如何实现?
代码片--实现一个简单的模版方法设计模式(获取一段程序运行的时间)