OAuth2介绍与使用

什么是OAuth2

OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息
OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0

应用场景

第三方应用授权登录:在APP或者网页接入一些第三方应用时,时常会需要用户登录另一个合作平台,比如QQ,微博,微信的授权登录,第三方应用通过oauth2方式获取用户信息

运作流程

微信开发文档流程说明如下:

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;

2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;

3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

具体的实现流程图如下:

 
OAuth2流程图

步骤说明(以微信授权登录为例)

1.用户访问第三方网站,第三方应用需要用户登录验证,用户选择微信授权登录
2.第三方应用发起微信登录授权请求

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 
参数 是否必须 说明
appid 公众号的唯一标识
redirect_uri 授权后重定向的回调链接地址
response_type 返回类型,请填写code
scope 应用授权作用域,snsapi_base 、snsapi_userinfo
state 重定向后会带上state参数,该值会被微信原样返回,我们可以将其进行比对防止攻击或者做用户步骤1访问url保存
wechat_redirect 直接在微信打开链接,可以不填此参数。做页面302重定向时候,必须带此参数

3.微信服务器拉起用户授权确认页面
4.用户授权通过
5.微信发送请求到第三方应用redirctUrl(第2步填写redirct_uri参数),返回凭证code与state(第2步自定义)

http://host/redirct_uri?code=0217a07e9c194dbf539c45c266b2dcfZ&state=state 

6.第三方应用获取到code之后,根据code获取accessToken

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 
参数 是否必须 说明
appid 应用唯一标识,在微信开放平台提交应用审核通过后获得
secret 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
code 填写第一步获取的code参数
grant_type 填authorization_code

返回参数

参数 说明
access_token 接口调用凭证
expires_in access_token接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
openid 授权用户唯一标识
scope 用户授权的作用域,使用逗号(,)分隔

7.根据accessToken获取用户信息

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID 

返回参数

参数 说明
openid 普通用户的标识,对当前开发者帐号唯一
nickname 普通用户昵称
sex 普通用户性别,1为男性,2为女性
province 普通用户个人资料填写的省份
city 普通用户个人资料填写的城市
country 国家,如中国为CN
headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
privilege 用户特权信息,json数组,如微信沃卡用户为(chinaunicom)
unionid 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

8.对用户信息进行处理(用户是否第一次登录,保存用户信息,自定义token,session处理等)
9.返回结果(步骤1对应url或者重定向到首页)

至此,微信OAuth2授权登录过程结束
具体细节请参考微信开发平台-移动应用授权登录

猜你喜欢

转载自www.cnblogs.com/karmapeng/p/12312272.html