TokenManager是一款基于Java开发的Spring Boot组件,用于管理自身平台以外的三方平台Token。
TokenManager将全场景的远程调用获取Token抽象到TokenManager接口中,通过调用指定的三方TokenAPI 实现各类三方平台的Token的管理。
TokenManager通过Redis的消息订阅特性实现了延时消息监听Token生命周期过期时间,从而自动刷新Token。 确保在高并发请求下,用户不会调用具体的三方接口实时获取Token。
TokenManager 默认实现了WEIXIN微信平台的accessToken(非用户授权码token)
TokenManager原理图如下所示:
多环境Token共享 例如:调试微信,获取appid+secrt换取accessToken,在开发环境和测试环境共用或不共用appid的情况下,可配置Token共享。
自动刷新accessToken 支持基于Oauth2协议的刷新Token机制,无需干预自动刷新,最佳的管理方式,提高接口响应速度。
多级缓存(待实现) 支持本地缓存与远程缓存。本地缓存JVM级别的,远程缓存基于Redis。提高Token的访问速度,防止Redis击穿雪崩。 本地缓存的生命周期动态管理。
可扩展 支持扩展现有的API实现,能够支持除了微信以外的其他平台。采用自动装配技术,实例动态注入到Spring容器中。
支持请求日志拦截 通过RestTempalte 拦截器实现了请求日志拦截,默认实现了请求Slf4j的info级别日志。可以自定义配置个性化的拦截实现。
准备好Redis-server,服务IP与端口还有密码
服务:127.0.0.1:6379
密码:123456
如果您没有Redis服务环境,推荐使用Docker部署测试。
在您的项目中pom.xml加入maven依赖:
<!-- 开发者:marker 三方Token管理器 -->
<dependency>
<groupId>com.wuweiit</groupId>
<artifactId>token-manager</artifactId>
<version>0.0.2</version>
</dependency>
spring:
## 三方Token管理器
token-manager:
# TokenManager自动装配开关
enabled: true
# redis链接地址
host: ${TOKEN_REDIS_HOST:127.0.0.1}
# redis密码
password : ${TOKEN_REDIS_PASSWORD:123456}
# redis数据索引 默认15
database : ${TOKEN_REDIS_DB:14}
port: ${TOKEN_REDIS_PORT:6379}
# Token管理器多实例配置
configMap:
# 微信Token接口配置,自动注入Bean weixinTokenManager
weixin:
type: WEIXIN
appid: xxxxx
appsecret: xxxxx
TokenAPI 提供了获取Token和刷新token两种接口,参数包含SecretConfig和Map,这里使用Map的原因是我们不能确定获取Token需要c端用户传递哪些数据字段,因此使用Map会较为通用的方式。
TokenManager会通过类型自动判断调用那个接口实现,当然我们也可以采用策略模式直接设置TokenAPI到TokenManger实例里。
通过时间偏移量来防止本地token过期,提前刷新Token。
词法状态 JavaCC 词法规范被组织成一组词法状态,每个词法状态都用一个唯一的标识符命名。有一个标准的词汇状态称为 DEFAULT。生成的令牌管理器随时处于这些词法状态之一。默认情况下,初始化令牌管理器时,它将在状态中启动。在构造令牌管理器对象时,也可以将起始词法状态指定为参数。 每个词法状态都包含一个正则表达式的有序列表 - 顺序派生自输入文件中的出现顺序。有四种类型的正则表达式: SKIP,
获取token分为两个步骤,第一步是获取授权码,第二步才是获取token。 获取demo 获取授权码 请求格式: GET https://ppmessage.com/ppauth/auth?state=xxxx&client_id=xxxx&redirect_id=xxxx&response_type=code 参数说明: 参数 说明 state 表示客户端的当前状态,可以指定任意值,PPMess
微哨第三方渠道接入服务(以下简称微门户)是微哨基于微信、QQ等第三方平台开发的轻量级门户产品。它提供了部分基础的平台功能以及在第三方渠道使用微哨轻应用的能力,方便用户在没有微哨App的情况下使用微哨服务。 需要特别指出的是,由于第三方渠道的限制,与微哨App相比,微哨微门户仅能支持比较基础的平台能力,如果想获得更良好的体验,建议在运营推广方面主推微哨App。 企业微信部署 本章节适用于企业微信的接
对于用户而言,注册账号密码是一件非常麻烦的事情,不但注册过程繁琐且花时间,同时也提高了用户的账号维护成本。因此如果网站能够提供第三方登录,让用户能够直接复用一些现有且常用的网站账号,将能够大大提高用户体验。 接入第三方登录 API 一些大型的站点平台都会开放相应的第三方登录接口和说明文档,如国内的有: 百度账号接入指南:http://developer.baidu.com 新浪微博接入指南:htt
一个工程通常依赖于其不能控制的组织所生产的软件,第三方软件危机是每个相关的人都必须意识到的。 永远也不要把希望放在蒸汽上面。蒸汽是任何所谓的尚未可用然而声称可用的软件。这是最确定的一种破产的方式。仅仅怀疑一个软件公司在某个日期对于某个软件产品的某个特性的承诺是不明智的。更明智的做法是完全忽略它,并且忘记你曾听说过这种事。不要在你的公司使用的任何文档里写下这些东西。 如果一个第三方软件不是蒸汽,它仍
说明 此协议由第三方会员平台实现并供平台使用三方会员卡时调用,实现下列功能: 1.会员第三方会员卡与微信卡的绑定和查询显示 2.三方会员卡充值、扣款 注意: 1.需要将三方平台接口地址填入平台相关设置 2.三方平台需要使用云平台、固定IP地址等对接方式,不支持花生壳等动态域名方式! 请求地址 http://三方会员平台地址/(此地址由商户设置在平台会员相关设置中) 请求方式 GET 公共参数 1.
说明 此协议由第三方会员平台实现并供平台使用三方会员卡时调用,实现下列功能: 1.会员第三方会员卡与微信卡的绑定和查询显示 2.三方会员卡充值、扣款 注意: 1.需要将三方平台接口地址填入平台相关设置 2.三方平台需要使用云平台、固定IP地址等对接方式,不支持花生壳等动态域名方式! 请求地址 http://三方会员平台地址/(此地址由商户设置在平台会员相关设置中) 请求方式 GET 公共参数 1.