OAuth2.0协议 - OAuth授权流程详解

三个重要步骤

OAuth2.0协议 - OAuth授权流程详解_第1张图片
1、慕课网腾讯QQ OAuth请求OAuth登录页
2、用户在这个页面中输入QQ号和密码
3、最后腾讯QQ OAuth把登录结果返回给慕课网

步骤一:请求OAuth登陆页

Request Token URL:为授权的令牌请求服务地址
结合我们的例子就是:慕课网请求QQ登录页面时使用的带有『特定参数的URL』。

https://graph.qq.com/oauth/show?which=Login&display=pc&client_id=100490398&response_type=code&scope=get_user_info&redirect_uri=http%3A%2F%2Fpassport.mukewang.com%2Fuser%2Ftpcallback%3Freferer%3Dhttp%3A%2F%2Fwww.imooc.com%26browser_key%3D0%26tp%3Dqq%26bind%3D0

client_id:第三方站点的唯一的appid
redirect_uri:回调地址

步骤二:用户使用第三方帐号登录并授权

前面我们已经知道redirect_uri就是QQ登录之后的回调地址(用户登录成功之后要跳转到什么地方去),并且在跳转的过程中URL上会带上一个加密的code参数

http://www.mukewang.com/user/qqcallback?code=xxxxxxxxxx

步骤三:返回登录结果

步骤一:请求OAuth登陆页

Request Token URL:为授权的令牌请求服务地址
结合我们的例子就是:慕课网请求QQ登录页面时使用的带有『特定参数的URL』。

https://graph.qq.com/oauth/show?which=Login&display=pc&client_id=100490398&response_type=code&scope=get_user_info&redirect_uri=http%3A%2F%2Fpassport.mukewang.com%2Fuser%2Ftpcallback%3Freferer%3Dhttp%3A%2F%2Fwww.imooc.com%26browser_key%3D0%26tp%3Dqq%26bind%3D0

client_id:第三方站点的唯一的appid
redirect_uri:回调地址

前面我们在介绍OAuth协议的时候,为了偏于理解,在『返回登录结果』处只画了一个箭头,其实这里有个一来一回的交互过程。
步骤二中,慕课网的服务器会拿到一个code,但是仅凭这个code还不够。慕课网还需要向QQ服务器发送一个请求(User Authorization URL:用户授权的令牌请求服务地址)。

大概是类似下面这样一个URL:

https://xxx.qq.com/oauth/....?
&client_id=100490398&....
&client_secret=xxxxxxx&.....
&code=xxxxxxxx&.......

code是个有生命周期且只可使用一次的字符串。

关于AccessToken

在QQ登录成功后,返回登录结果中,响应给慕课网的数据中还有一个AccessToken
这个AccessToken,就是用户通过第三方应用访问OAuth接口的令牌。

比如:通过慕课网把自己喜欢的课程分享到QQ空间

AccessToken与RefreshToken数据传输原理

OAuth2.0协议 - OAuth授权流程详解_第2张图片

AccessToken与RefreshToken生命周期

AccessToken:一般具有较长的生命周期
当AccessToken快要过期的时候,很多平台可以使用一个RefreshToken来要求刷新AccessToken。

User Authorization URL中指定参数
.....&need_refresh_token=true&....

你可能感兴趣的:(最佳实践)