OAuth2 授权
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OAuth2 授权相关的知识,希望对你有一定的参考价值。
参考技术A引自balckheart大神的博文
通俗的话可以这样去理解,假如你们公司正在开发一个 第三方应用XXX ,该应用会需要在 微信 中分享出来一个活动页,该活动需要让 微信用户 去参与,你们的应用需要 收集到用户的姓名,头像,地域 等信息,那么问题来了?你的应用如何才能拿到所有参与活动的微信用户的基本信息呢?
根据以上示例,可以将OAuth2分为四个角色:
不难看出,OAuht2 解决问题的关键在于使用 授权服务器 提供一个 访问凭据 给到 第三方应用 ,让 第三方应用 可以在 不知道资源所有者 在 资源服务器上的账号和密码 的情况下,能获取到 资源所有者 在 资源服务器 上的 受保护资源 ,这里的受保护资源就是 微信用户的姓名以及头像等信息 。
引用 blackheart 博主 的流程图
拿上述的获取微信用户信息示例来说
至此,整套授权流程结束,可以看出 访问令牌 是整个流程中的核心
除此之外,还需要提供一个让第三方应用程序注册的管理后台,当第三方应用注册后会给到第三方应用一个app_id & app_secret ,app_secret是第三方应用程序的私钥,不允许在授权过程中传递的,主要用户安全加密用。
引用 blackheart 博主 的流程图
简要阐述一下各步骤
第三方应用使用用户代理(浏览器,或自己的服务器)访问微信授权服务器提供的一个url,该url就是提供获取授权码的url,第三方应用需要传递一下参数
示例请求
微信授权服务器验证第三方应用再上一步中传递的参数,确认无误后会提供一个页面给微信用户a登录或者手动确认授权操作,操作超过后微信授权服务器会根据redirect_uri重定向到该地址,并携带下发的授权许可code
类似重定向地址
第三方应用根据上一步拿到的授权码code以及app_id,重定向地址等参数,再次请求微信授权服务器,请求获取访问令牌access_token
请求示例如下
微信授权服务器返回访问令牌和一些刷新令牌,令牌过期时间等信息给到第三方应用
返回示例如下:
第三方应用根据访问令牌去微信资源服务器获取微信用户a的基本信息。
请求参数示例
请求url示例
返回参数示例
返回url示例
请求参数示例
请求url 示例
请求参数示例
当访问令牌过期时,由第三方应用调用微信授权服务器的刷新令牌接口,传递以下参数即可。
这样就可以一直使用有效的访问令牌啦
以上是关于OAuth2 授权的主要内容,如果未能解决你的问题,请参考以下文章