API 开放接⼝设计之 appId,appSecret,accessToken
⼀、开放接⼝设计说明:
为每个合作机构创建对应的 appid、app_secret,⽣成对应的 access_token(有效期 2 ⼩时),在调⽤外⽹开放接⼝的时候,必须传递有
效的 access_token。
使⽤ access_token 验证通过才能正常调⽤开放的 API 接⼝
- appid 是每个⽤户唯⼀的
- app_secret 可以开发着平台更改
- access_token 通过 appid + app_secret ⽣成,(有效期 2 ⼩时)
如:微信公众号开发调⽤微信接⼝,下⾯就⾃⼰写⼀个类似于微信开发的 api 开放接⼝平台
使⽤流程:同调⽤第三⽅平台接⼝
- api 开发平台申请 appid ,app_secret ,或⾃⾏提供给消费⽅
- 消费⽅通过 appid ,app_secret 获得 access_token (有效期 2 ⼩时)
- 消费⽅调⽤接⼝携带 accessToken 参数,验证通过可以才访问接⼝,未提供返回错误信息
⼆、数据库表设计 (已下为核⼼字段,更多⾃⾏添加)
1 | App_Name 表⽰机构名称 |
三、Token ⽣成⼯具类 TokenUtils
1 | public class TokenUtils { |
四、getAccessToken 接⼝⽣成 accessToken
步骤:
- 调⽤接⼝传递 appId+appSecret
- 判断是否存在商户信息
- 判断商户信息是否有权限
- ⽣成 AccessToke,根据当前 appId 商户更新最新的 accessToke 到数据库
- 删除 Redis 上次⽣成的 AccessToke 缓存,保存最新的 accessToke 到 Redis
1 | import org.springframework.beans.factory.annotation.Autowired; |
五、添加拦截器 AccessTokenInterceptor ,判断请求参数 accessToken
统⼀拦截所有开放接⼝的请求,判断 accessToken 是否有效
1 | import java.io.IOException; |
六、添加拦截器 AccessTokenInterceptor 的拦截范围
添加拦截器 AccessTokenInterceptor 的拦截范围
/openApi 下的所有接⼝
1 | import org.springframework.beans.factory.annotation.Autowired; |
使⽤流程:同调⽤第三⽅平台接⼝
- api 开发平台申请 appid ,app_secret ,或⾃⾏提供给消费⽅
- 消费⽅通过 appid ,app_secret 获得 access_token (有效期 2 ⼩时)
- 消费⽅调⽤接⼝携带 accessToken 参数,验证通过可以才访问接⼝,未提供返回错误信息