OAuth2 原理
前提
每个网站要(本文以慕课网为例)想使得用户可以通过第三方应用(本文以QQ为例)登录其网站,那么首先要到QQ互联官网提交相关资料以供审核
提交资料主要信息如下表
appId | appKey | domain | description | redirect_uri |
---|---|---|---|---|
10001 | 421221001 | www.mooc.com | 在线教育平台 | http://www.mooc.com |
10002 | 421221002 | blog.csdn.net | csdn网站 | blog.csdn.net |
… | … | … | … | … |
流程图
过程
用户访问慕课网(用户想看视频,需要登录,但是用户很懒,不想注册账号)
用户点击QQ登录按钮(慕课网请求OAuth登录)
此时发送的URL请求即是Request Token URL:慕课网请求QQ登录页使用的带有特定参数的URL
URL= http://graph.qq.com/oauth/…?…&client_id=10001 & redirect_uri=http://www.mooc.com
其中:client_id对应的是慕课网在提交审核资料给QQ互联官网时所分配的唯一的appId;redict_uri即为回调地址;
用户在OAuth登录页面输入QQ号和密码之后成功登录,然后用户点击授权按钮,然后返回到redirect_uri所对应的网址:http://www.mooc.com/qqcallbcak?code=xxx
此时慕课网服务器会获取url中包含的code值,然后慕课网会发送post请求到User Authorization URL所对应的网址:https://xxx.qq.com/oauth/…?.. & client_id=10001 & client_secret=421221002 & code=xxx
请求返回的json或xml数据中包含AccessToken信息,通过该AccessToken,慕课网可以获取该QQ用户的一些基本信息(由权限所约束),比如QQ用户名和邮箱
此时,用户所在页面为登录慕课网成功页面,用户可以看视频或者进行留言;