第三方授权 -- 应用场景分析

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 认证中心,得到用户授权后,重定向到新浪网站,进行登录。这一步主要是后台在处理。后台要完成

  1. 向 QQ 认证中心发请求,校验 code 真伪,通过 则QQ 认证中心给后台返回 token
  2. 通过 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/,完成登录。

 

posted on 2020-08-19 10:32  一直小飞猫  阅读(562)  评论(0编辑  收藏  举报

导航