type
status
date
slug
summary
tags
category
icon
password
上次编辑时间
May 15, 2024 04:55 AM
创建时间
Jan 6, 2024 06:34 AM
参考链接
1.第三方登录的原理
所谓第三方登录,实质就是
OAuth
授权。用户想要登录 A
网站,A
网站让用户提供第三方网站的数据,证明自己的身份。获取第三方网站的身份数据,就需要 OAuth
授权。举例来说,A 网站允许
GitHub
登录,背后就是下面的流程。A 网站让用户跳转到 GitHub。GitHub要求用户登录,然后询问"A 网站要求获得 xx 权限,你是否同意?"用户同意,GitHub就会重定向回 A 网站,同时发回一个授权码。A 网站使用授权码,向 GitHub请求令牌。GitHub返回令牌.A 网站使用令牌,向 GitHub请求用户数据。
2.创建应用
详细⬇️
- 进入
Github
⬇️
- 点击头像 ➡️
Settings
- 左侧侧边栏最底下➡️
Developer settings
- 左侧侧边栏第二个➡️
OAuth Apps
- 右侧内容区➡️
New OAuth App
- 填写相关信息
- 点击注册应用后,生成一个
Client secrets
- 只会出现一次
Client secrets
,自己保存好



3. 示例仓库
我写了一个代码仓库open in new window,请将它克隆到本地。
在
app.js
中写入自己的自己的clientId
和clientSecret
安装依赖并启动服务
浏览器访问
http://localhost:3000
,就可以看到这个示例了。4.浏览器跳转 GitHub
示例的首页很简单,就是一个链接,让用户跳转到 GitHub。

跳转的
URL
为:- 请求路径为
https://github.com/login/oauth/authorize
- 请求参数为:
client_id
redirect_uri
scope
。更多参数点击查看Github Docs
client_id
是必须的
redirect_uri
是可选的,- 不填的前提是在创建应用时添加了完整了回调地址
- 否者这里就要添加回调地址参数
最后跳转到这个地址
5.用户授权
用户确定授权

用户确定授权后,会跳转到自己创建的回调地址,我们可以在回调地址内填写自己需要的相关操作
1.获取access_token
在/oauth-callback路由内发送请求获取access_token⬇️
输出如下内容
access_token
保存起来,后面的请求都需要添加 headers->Authorization
2.获取用户信息
同样,接下来在/oauth-callback路由内发送请求获取相关用户信息⬇️
打印输出⬇️
到这里相关信息就出来了,可以看到用户名,头像链接.但是可以看到null
好像是因为用户没有将邮箱公开其实也可以获取,请往下看⬇️
3.获取用户邮箱
如果不需要用户邮箱,可以忽略这一步在上面两个请求后面,添加如下内容
打印输出
6.完成授权
接下来就是在路由内继续添加自己的需求,可以是将用户信息保存在数据库
友情提示
当点击授权后,Github以及将你本次的登录状态保存,下一次再测试将不会经过你授权需要进入应用管理 将状态移除,再执行授权
