在做微信第三方平台开发的时候, 虽然授权的技术实现流程比较简单, 但是相对于一个 key 直接集成的一些其他的服务来说, 还是有一些步骤, 过一段时间再回头查相关功能时还是可能忘记的, 虽然官方的文档很全, 但时每次都要前前后后看文档或每次都要走一遍步骤还是挺浪费时间的.
微信开放平台 https://open.weixin.qq.com : 平台定位, 面向开发者, 提供微信登录, 分享, 支付等相关权限和服务
微信公众平台 https://mp.weixin.qq.com/ : 包括订阅号, 服务号, 企业号和小程序(可申请支付)
于是本人整理了下相关内容, 进行分享和讨论.
交互流程
搬自官网, 以公众号为例, 授权给第三方平台整体流程如下图:
授权流程技术说明
具体的步骤为:
第三方平台方获取预授权码(pre_auth_code)
引入用户进入授权页(PC 和移动端)
用户确认并同意登录授权给第三方平台方
授权后回调 URI, 得到授权码 (authorization_code) 和过期时间
利用授权码调用公众号或小程序的相关 API(获取授权方的 token 等)
接口调用流程
整体流程还是很清晰易懂的, 但是到具体接口调用时可能会有一些混乱, 比如接口之间的参数的衔接等. 因此本人制作了一张图, 从接口调用的角度来描述授权的流程, 如下:
步骤从上到下
常见问题
- 1.
- component_access_token
的更新方式
答: 使用获取接口来更新.
- 2.
- authorizer_access_token
的更新方式
答: 使用 refresh_token 来更新.
refresh_token 也要同时使用最新返回的结果
- 3.
- authorizer_refresh_token
的丢失处理
答: 需要重新授权(从头来一遍).
- 4.
- component_access_token
和
authorizer_access_token
的更新机制
答: 主动 + 被动.
主动: 设定定时任务 (如: 1min) 分别检查
component_access_token
和
authorizer_access_token
是否快过期或过期, 如果是则更新 token
被动: 每次使用
component_access_token
或
authorizer_access_token
时, 先检查相应其是否过期, 如果过期则更新 token 再继续相应操作
微信该接口有次数限制, 因此需要合理的时机来请求
参考: 获取 access_token
来源: https://juejin.im/post/5c7550c56fb9a049a5718f83