本篇内容以用户访问百度,通过新浪微博的第三方登录百度过程讲解

用户:资源拥有者
百度:客户端
新浪微博:认证服务器

前置条件: 百度已经向新浪微博申请注册,分配给百度的client_id是2512457640

地址流程图如下

1.用户(资源拥有者) 访问百度(客户端)

2.点击新浪微博(认证服务器)登录, 浏览器(用户代理)跳转至新浪微博登录页面

百度跳转新浪微博,请求参数为

  https://api.weibo.com/oauth2/authorize?
client_id=2512457640
&response_type=code
&redirect_uri=https%3A%2F%2Fpassport.baidu.com%2Fphoenix%2Faccount%2Fafterauth%3Fmkey%3Df7ab38e47c1c6183b7e141c196e6f07d7428ecd21b9944f765%26tpl%3Dmn
&forcelogin=1
&state=1646642558
&display=page
&traceid=
参数 备注
client_id=2512457640 客户端id
response_type=code 认证类型, code是授权码
redirect_uri=https%3A%2F%2Fpassport.baidu.com%2Fpho
enix%2Faccount%2Fafterauth%3Fm
key%3Df7ab38e47c1c6183b7e141c196e6f07d7428ecd21b9944f765%26tpl%3Dmn
重定向地址, 用于认证成功/或失败后回跳百度的地址;
state=1646642558 状态,自行定义,后续需要原封不动回传;

3.展示新浪微博(认证服务器)登录页面, 用户进行登录,默认是二维码登录

请求

  https://api.weibo.com/oauth2/qrcode_authorize/generate?
client_id=2512457640&
redirect_uri=https%3A%2F%2Fpassport.baidu.com%2Fphoenix%2Faccount%2Fafterauth%3Fmkey%3Dab2ab0542a50c028ddc3467d55819c6ed4db1b14f6ee132a58%26tpl%3Dmn&
scope=&
response_type=code&
state=1646731217&
__rnd=

响应

 {"url":"https://api.weibo.com/oauth2/qrcode_authorize/show?vcode=4ffaa0772c35b9af819c12296fbd001e&qr_url=https%3A%2F%2Fopen.weibo.cn%2Foauth2%2Fqrcode_authorize%3Fclient_id%3D2512457640%26redirect_uri%3Dhttps%253A%252F%252Fpassport.baidu.com%252Fphoenix%252Faccount%252Fafterauth%253Fmkey%253Dab2ab0542a50c028ddc3467d55819c6ed4db1b14f6ee132a58%2526tpl%253Dmn%26scope%3D%26response_type%3Dcode%26state%3D1646731217%26vcode%3D4ffaa0772c35b9af819c12296fbd001e","vcode":"4ffaa0772c35b9af819c12296fbd001e"}

url值进行urlDecode

https://api.weibo.com/oauth2/qrcode_authorize/show?
vcode=4ffaa0772c35b9af819c12296fbd001e&
qr_url=https://open.weibo.cn/oauth2/qrcode_authorize?client_id=2512457640&
redirect_uri=https%3A%2F%2Fpassport.baidu.com%2Fphoenix%2Faccount%2Fafterauth%3Fmkey%3Dab2ab0542a50c028ddc3467d55819c6ed4db1b14f6ee132a58%26tpl%3Dmn&
scope=&
response_type=code&
state=1646731217&
vcode=4ffaa0772c35b9af819c12296fbd001e

redirect_uri值进行urlDecode

https://passport.baidu.com/phoenix/account/afterauth?
mkey=ab2ab0542a50c028ddc3467d55819c6ed4db1b14f6ee132a58&
tpl=mn

4.新浪微博(认证服务器)授权成功/失败

失败暂且不讨论,如认证失败,新浪直接重定向redirect_uri, 后续流程结束;

5.新浪微博(认证服务器)授权成功

页面轮询查询授权状态接口

https://api.weibo.com/oauth2/qrcode_authorize/query?
vcode=4ffaa0772c35b9af819c12296fbd001e&
__rnd=1646731224042

响应

 {"url":"https://api.weibo.com/oauth2/qrcode_authorize/show?vcode=b5d305c509a271090f8796cac4c4df60&qr_url=https%3A%2F%2Fopen.weibo.cn%2Foauth2%2Fqrcode_authorize%3Fclient_id%3D2512457640%26redirect_uri%3Dhttps%253A%252F%252Fpassport.baidu.com%252Fphoenix%252Faccount%252Fafterauth%253Fmkey%253Df7ab38e47c1c6183b7e141c196e6f07d7428ecd21b9944f765%2526tpl%253Dmn%26scope%3D%26response_type%3Dcode%26state%3D1646642558%26vcode%3Db5d305c509a271090f8796cac4c4df60","vcode":"b5d305c509a271090f8796cac4c4df60"}

url值进行urlDecode

https://api.weibo.com/oauth2/qrcode_authorize/show?
vcode=b5d305c509a271090f8796cac4c4df60&
qr_url=https://open.weibo.cn/oauth2/qrcode_authorize?client_id=2512457640&
redirect_uri=https%3A%2F%2Fpassport.baidu.com%2Fphoenix%2Faccount%2Fafterauth%3Fmkey%3Df7ab38e47c1c6183b7e141c196e6f07d7428ecd21b9944f765%26tpl%3Dmn&
scope=&
response_type=code&
state=1646642558&
vcode=b5d305c509a271090f8796cac4c4df60

6.回跳百度(客户端)页面, 重定向地址是redirect_uri(2步骤中)

https://passport.baidu.com/phoenix/account/afterauth?
mkey=ab2ab0542a50c028ddc3467d55819c6ed4db1b14f6ee132a58&
tpl=mn&
state=1646731217&
code=baf71815288d715502ec0072ca4b47d0

并且附带参数

参数 备注
vcode=b5d305c509a271090f8796cac4c4df60 临时授权码, 拼接在redirect_uri后面
state 状态(2步骤中), 原封不动拼接在redirect_uri

响应是一个html页面,此页面为过度页面,
目的是为后续流程的百度(客户端)后台请求新浪微博(认证服务器)后台, (步骤7, 步骤8)
此过程用户不可见,只为用户在前台提供过度页面

7.百度(客户端)收到回跳后, 通过后台请求新浪微博(认证服务器),申请令牌

附带参数

参数 备注
grant_type 授权模式,必选项,固定值为grant_type=authorization_code。
code 上一步的临时授权码,必选项,vcode临时授权码 b5d305c509a271090f8796cac4c4df60
redirect_uri 重定向URI,必选项,且必须与2步骤中的该参数值保持一致。用于验证。
client_id 客户端id,必选项。client_id=2512457640

新浪微博(认证服务器)收到请求,验证通过,向百度(客户端) 返回

参数 备注
access_token 访问令牌
refresh_token 更新令牌
expires_in 过期时间,单位秒
token_type 令牌类型,大小写不敏感,可以是bearer类型或mac类型。

说明此步骤服务器通讯,用户不可见。

8.百度(客户端)请求新浪微博(认证服务器),请求用户信息接口,或其他接口

接口请求头附带headers参数Authorization: access_token等信息

新浪微博(认证服务器)收到请求,验证通过,向百度(客户端) 返回
用户的唯一id, 头像,用户昵称,用户年龄等基础信息,但肯定不会包括用户登录新浪微博的密码

此用户信息接口为举例, 步骤8的过程可能是,百度(客户端)请求新浪微博(认证服务器)的其他接口,当然也可能请求多个不同接口,拉去用户信息,但每个请求肯定是附带access_token的凭证

9.百度(客户端)登录成功,用户自行访问

步骤7,步骤8, 过程过程处理完后,前端页面也会自动重新跳转,过度页面结束,例如跳转至百度首页。

10.用户访问一段时间后,由于百度(客户端)业务需要, 百度(客户端)再次需要请求新浪微博(认证服务器)

但是之前的access_token的过期时间expires_in,已经过期,重新请求获取新的access_token访问令牌接口

请求参数

参数 备注
granttype 授权模式,此处的值固定为granttype=refreshtoken,必选项。
refresh_token 更新令牌,必选项, 步骤7中的refresh_token的值

响应

参数 备注
access_token 新的access_token 访问令牌
expires_in 新的expires_in 过期时间,单位秒
说明此步骤服务器通讯,用户不可见

得到新的新的access_token, 可以继续重复步骤8的内容
说明此步骤服务器通讯,用户不可见

11.用户自行访问百度

OAuth2.0 第三方登录相关推荐

  1. [OAuth2.0三方登录系列文章-1]OAuth2.0与三方登录的端到端方案

    系列文章 [OAuth2.0三方登录系列文章-1]OAuth2.0与三方登录的端到端方案 [OAuth2.0三方登录系列文章-2]如何设计基于OAuth2.0的授权登录SDK以及竞品分析 [OAuth ...

  2. OAuth2.0授权登录

    OAuth2.0授权登录 最近工作中遇到了多系统间的授权登录,对OAuth2.0进行了学习研究,并总结备忘. [场景] 我们登录一些论坛等网站的时候,如果不想单独注册该网站账号,可以选择用微信或QQ账 ...

  3. 微信公众号网页OAuth2.0授权登录并获取用户信息(SpringBoot实现)

    微信公众号网页OAuth2.0授权登录并获取用户信息(SpringBoot实现) 文章目录 微信公众号网页OAuth2.0授权登录并获取用户信息(SpringBoot实现) 准备工作 开发思路 具体代 ...

  4. Java实现第三方登录--OAuth2.0新浪微博登录接入(二)

    目录 一.完成微博平台应用注册,获取参数 1.登录微博开发平台. 2.开发者认证 3.创建应用 3.1 选择网站接入 3.2 立即接入 3.3 创建新应用 3.4  完善应用的基本信息和高级信息 二. ...

  5. GitLab 配置 OAuth2 实现第三方登录,简直太方便了!

    点击关注公众号,实用技术文章及时了解 需求提出: 公司内部已有一套oneid用户中心,需要支持登录gitlab. 实现 GitLab支持配置第三方登录, 修改配置文件gitlab.rb: vi /et ...

  6. OAuth2.0 社交登录-Gitee springboot项目整合(微服务分布式)完整代码包括 数据库、前、后端

    文章目录 社交登录(Gitee) 1.模拟请求 项目整合 1.数据库增加字段 2.前端 2.后端 社交登录(Gitee) 完成这个踩了很多坑,包括第一时间忘了浏览器缓存这回事以及微博一些平台申请社交登 ...

  7. OAuth2.0第三方授权

    第一章.OAuth2.0 介绍 OAuth认证 OAuth认证是为了做到第三方应用在未获取到用户敏感信息(如:账号密码.用户PIN等)的情况下,能让用户授权予他来访问开放平台(主要访问平台中的资源服务 ...

  8. oauth2.0 注销登录再次访问authorize授权接口会跳过登录页面问题解决

    [重要提示,该种做法纯属技术理解和技术探索,禁止用于生产环境!因为违背了oauth2.0自动认证的宗旨!会导致无法自动登录问题] [禁止用于生产环境] [禁止用于生产环境] [禁止用于生产环境] [禁 ...

  9. 淘宝 OAuth2.0 的登录验证与授权

    最近老板有意与淘宝合作,网站需要支持淘宝登陆验证与授权,所以研究了下淘宝的第三方登陆,基于OAuth2.0(其实也没啥好说的,原理都一样,主要是一些细节).写blog的原因是当时研究这玩意是发现文档只 ...

最新文章

  1. 我的计算机书籍创作心得
  2. 2.3.5 用信号量实现 进程互斥 同步 前驱关系
  3. c语言将0到1十等分放入数组,C语言课程设题计目汇总.doc
  4. 动态规划,从例子到理解
  5. 第七课 ActionScript 3语言进阶一
  6. Hibernate锁定模式– PESSIMISTIC_READ和PESSIMISTIC_WRITE如何工作
  7. SAR图像变化检测的评价方法
  8. CV Code | 本周新出计算机视觉开源代码汇总(含图像修复、目标检测、医学图像分割、度量学习等)...
  9. docker安装hbase
  10. Windows Terminal 已上架,快尝鲜
  11. Linux如何查看哪个进程占用的SWAP分区比较多
  12. 基于SSM+MySQL的实现的汽车门店管理平台系统
  13. 铨顺宏RFID:电子汽车车牌系统具有RFID识别功能
  14. mybatis-plus调用自身的 selectById 方法报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You hav
  15. 计算机教师专业发展规划,信息技术教师个人成长计划
  16. 欧几里得  拓展欧几里得算法 讲解 (Euclid Extend- Euclid Algorithm)
  17. android 模拟器监听短信,android模拟器用命令和DDMS模拟来电和短信
  18. 解读ORACLE数据库的统一命名与编码规范
  19. winter 老师前端面试直播总结
  20. 解决”您的连接不是私密链接“的问题!

热门文章

  1. echarts-王者荣耀雷达图
  2. bzoj5334 [Tjoi2018]数学计算(线段树)
  3. 一个javascript 滑竿控件
  4. python 强制结束线程
  5. CPU架构简介(ARM、X86/Atom、MIPS、PowerPC)
  6. android 实时虚化,实时虚化如何实现?详解红米Pro双摄原理
  7. 阿里半跪过,任正非差点跳楼,京东被骗光钱:成年人的生活哪有容易二字?...
  8. 吐槽大会4_吐槽大会4嘉宾名单已出 网友第一反应就是我诞总呢
  9. pg数据库(PostgreSQL)与gp数据库(GreenPlumSQL)的区别与联系
  10. Pytorch:核心模块,torch.nn与网络组成单元