授权码许可类型的通信过程
间接通信
间接通信就是指获取授权码的交互。
我:“xx,我要访问你了。”
xx:“我把你引到授权服务,我需要授权服务给我一个授权码。”
授权服务:“xx,我把授权码发给浏览器了。”
小兔软件:“ 那我从浏览器拿到了授权码。”
xx和授权服务间,并无直接通信,而是通过中间人(浏览器).
直接通信
授权码换取访问令牌的交互,是“直接”的。
三方软件xx获取到授权码后,向授权服务发起获取访问令牌 access_token
的请求。
三方软件要代表资源拥有者去访问受保护资源
授权服务负责颁发访问令牌,受保护资源负责接收并验证访问令牌。
开发微信小程序场景
比如获取用户登录态信息的过程:
通过 wx.login(Object object) 获取登录凭证 code,该步是在小程序内部通过调用微信提供的 SDK 实现的
再通过该 code 换取用户的 session_key 等信息,即官方文档的 auth.code2Session 方法,同时该方法也是被强烈建议通过开发者的后端服务来调用
参考
https://leokongwq.github.io/2017/02/28/why-oauth2-use-authorization-code.html
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
https://segmentfault.com/q/1010000014642301
https://tools.ietf.org/html/rfc6749