三个重要步骤
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数据传输原理
AccessToken与RefreshToken生命周期
AccessToken
:一般具有较长的生命周期
当AccessToken快要过期的时候,很多平台可以使用一个RefreshToken来要求刷新AccessToken。
User Authorization URL中指定参数
.....&need_refresh_token=true&....