哔哩哔哩如何不用绑定手机号登录(一篇文章让你学会第三方登录)

首页教程更新时间:2023-02-18 20:14:12
背景

我们在登录网站时,很多网站除了提供用户名密码或手机号登录的方式外,还提供了第三方登录的方式(使用QQ、微信、微博登录),用户无需注册便可登录网站。如图:

哔哩哔哩如何不用绑定手机号登录,一篇文章让你学会第三方登录(1)

在实现第三方登录时,通常采用OAuth 2.0标准的授权码模式。

OAuth 2.0 简介

OAuth 2.0 是RFC 6749文件中定义的一种标准,也是目前最流行的授权机制,用来授权第三方应用,获取用户数据。

OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。......资源所有者同意以后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。

OAuth 2.0 的核心就是向第三方应用颁发令牌。

令牌与密码

令牌(token)与密码(password)的作用是一样的,都可以进入系统,但是有三点差异:

  1. 令牌是短期的,到期会自动失效,用户自己无法修改。密码一般长期有效,用户不修改,就不会发生变化。
  2. 令牌可以被数据所有者撤销,会立即失效。密码一般不允许被他人撤销。
  3. 令牌有权限范围(scope),可以限制令牌持有者使用数据的范围。密码一般是完整权限。

令牌既可以让第三方应用获得权限,同时又随时可控,不会危及系统安全。这就是OAuth 2.0 的优点。

四种授权模式

OAuth 2.0 规定了四种获得令牌的流程:

注意,不管哪一种授权模式,第三方应用申请令牌之前,都必须先到系统备案,说明自己的身份,然后会拿到两个身份识别码:客户端 ID(client ID)和客户端密钥(client secret)。这是为了防止令牌被滥用,没有备案过的第三方应用,是不会拿到令牌的。

授权码模式

授权码(authorization code)模式的特点就是第三方应用先申请一个授权码,然后再用该码换取令牌。

这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是通过后端传送。这样的前后端分离,可以避免令牌泄漏。

OAuth 2.0 授权码模式中定义了五种角色:

例如,用户A登录哔哩哔哩网站时,选择QQ方式登录,那么,资源所有者就是指用户A,资源服务器和授权服务器就是QQ提供的服务器,第三方应用就是B站。

资源服务器和授权服务器可以为同一台服务器,也可以为不同的服务器,但这两种角色肯定属于同一方。

到底谁是第三方?

前面在背景中提到,用户使用第三方登录的方式(QQ)登录B站,从这个角度看,第三方是QQ;而在授权码定义中,第三方应用又是指B站。

我认为,背景中提到的“第三方登录”其实应该称为“其他方式登录”;而授权码中的第三方就是指向用户申请授权并获取用户信息的应用。

授权流程

核心流程如图所示:

哔哩哔哩如何不用绑定手机号登录,一篇文章让你学会第三方登录(2)

核心流程

具体流程如下:

1.用户访问B站(https://www.bilibili.com/),点击登录按钮,然后选择QQ登录。

2.用户点击“QQ登录”后,B站会把网页跳转到QQ系统提供的用户授权页面,示意URL如下:

https://graph.qq.com/oauth2.0/show?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_URL&scope=read

3.用户同意授权后,QQ授权服务器生成授权码,然后把网页跳转回redirect_uri参数指定的网址。跳转时会携带授权码参数,示意URL如下:

https://www.bilibili.com/callback?code=AUTHORIZATION_CODE

4.B站拿到授权码后,从系统后端向QQ授权服务器的令牌接口发送一个请求,用授权码换取令牌。示意请求如下:

https://graph.qq.com/oauth2.0/token?client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code&code=AUTHORIZATION_CODE

5.QQ授权服务器接收到请求后,生成访问令牌(访问令牌(access_token)必须,刷新令牌(refresh_token)可选),然后返回JSON数据。示意JSON如下:

{ "access_token": "ACCESS_TOKEN", "token_type": "bearer", "expires_in": 2592000, "refresh_token": "REFRESH_TOKEN", "scope": "read", "uid": 100101 }

6.B站拿到访问令牌后,就可以请求QQ资源服务器提供的用户信息接口,获取用户数据。

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
天使助手
天使助手
下载
疯师傅苹果数据擦除v6.0.0.4官方版
疯师傅苹果数据擦除v6.0.0.4官方版
下载
三门同城
三门同城
下载
上古卷轴5重制版黑色军械库MOD
上古卷轴5重制版黑色军械库MOD
下载
神马星球商户
神马星球商户
下载
船洗并修理它
船洗并修理它
下载
公路卡车模拟驾驶
公路卡车模拟驾驶
下载
闪货宝app
闪货宝app
下载
恒泰证券开户
恒泰证券开户
下载
Udacityapp
Udacityapp
下载
瘦腿助手
瘦腿助手
下载
请安静Mac版V1.8
请安静Mac版V1.8
下载
普通话学习iOS版
普通话学习iOS版
下载
知课在线
知课在线
下载
漫芽糖指绘
漫芽糖指绘
下载
天上碑之天命所归
天上碑之天命所归
下载