天天看点

OAuth 2.0实战(二)-为什么要先获取授权码code?(下)授权码许可类型的通信过程开发微信小程序场景

授权码许可类型的通信过程

间接通信

间接通信就是指获取授权码的交互。

OAuth 2.0实战(二)-为什么要先获取授权码code?(下)授权码许可类型的通信过程开发微信小程序场景

我:“xx,我要访问你了。”

xx:“我把你引到授权服务,我需要授权服务给我一个授权码。”

授权服务:“xx,我把授权码发给浏览器了。”

小兔软件:“ 那我从浏览器拿到了授权码。”

xx和授权服务间,并无直接通信,而是通过中间人(浏览器).

直接通信

授权码换取访问令牌的交互,是“直接”的。

OAuth 2.0实战(二)-为什么要先获取授权码code?(下)授权码许可类型的通信过程开发微信小程序场景

三方软件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