第三方授权 -- 应用场景分析
1. QQ 授权方式登录新浪网首页
时序图如下:
1.1 进入 QQ 授权页面
进入新浪首页,通过 QQ 授权方式登录新浪网,截图如下:
点击按钮后跳转,地址如下:
https://graph.qq.com/oauth2.0/show?Which=Login&display=pc&client_id=101019034&response_type=code&scope=get_info,get_user_info&redirect_uri=https://passport.weibo.com/othersitebind/bind?site=qq&state=CODE-yf-1LAEL3-23g5mV-juhI2zwQuG4wL4b851e40&bentry =homepage&wl=1&callback=https://www.sina.com.cn/&display=
进入授权页面,如下:
1.2 授权并登录
1.2.1 获取授权码 code
点击授权并登录按钮,本次 post 请求,得到 302 应答。 返回重定向地址为请求参数 redirect_uri 的值。并且附加了 授权码 code 参数,表示网站得到 QQ 用户授权,可以去获取 QQ 数据。
Chrome 开发者工具,报文数据截取如下 General: Request URL: https://graph.qq.com/oauth2.0/authorize Request Method: POST Status Code: 302 请求参数: response_type: code client_id: 101019034 redirect_uri:https://passport.weibo.com/othersitebind/bind?Site=qq&State=CODE-yf-1LAFlS-23g5mV-8mdw6OaV7468M5l5a937f&Bentry=homepage&Wl=1&Callback=https://www.sina.com.cn/ scope: get_info,get_user_info state: 应答返回重定向地址,如下: location: https://passport.weibo.com/othersitebind/bind?Site=qq&State=CODE-yf-1LAFlS-23g5mV-8mdw6OaV7468M5l5a937f&Bentry=homepage&Wl=1&Callback=https://www.sina.com.cn/&Code=CDF2C979CB575FCC1BD59C32DCF56374
1.2.2 重定向到新浪网站
QQ 认证中心,得到用户授权后,重定向到新浪网站,进行登录。这一步主要是后台在处理。后台要完成
- 向 QQ 认证中心发请求,校验 code 真伪,通过 则QQ 认证中心给后台返回 token
- 通过 token 获取用户的信息。 这里业务上有多种处理,可以直接把用户信息保存,在特定时间内用户免登录,新浪是这个策略。也可以引导用户注册,将用户输入数据跟后台从 QQ 获取的数据合并,作为用户信息。
Chrome 开发者工具,报文数据截取如下 General: Request URL: https://passport.weibo.com/othersitebind/bind?Site=qq&State=CODE-yf-1LAFlS-23g5mV-8mdw6OaV7468M5l5a937f&Bentry=homepage&Wl=1&Callback=https://www.sina.com.cn/&Code=CDF2C979CB575FCC1BD59C32DCF56374 Request Method: GET Status Code: 302 应答返回重定向地址,如下: Location: https://www.sina.com.cn/
根据重定向地址, 浏览器重定向到 https://www.sina.com.cn/,完成登录。