1.5 oAuth2第三方登录

什么是oAuth2

阮一峰 大神的普及arrow-up-right

流程

来源于arrow-up-right

  1. 在GitHub中备案第三方应用,拿到属于它的客户端ID和客户端密钥。

在github-settings-developer settings中创建一个OAuth App。并填写相关内容。填写完成后Github会给你一个客户端ID和客户端密钥。

  1. 此时在你的第三方网站就可以提供一个Github登录链接,用户点击该链接后会跳转到Github。这一步拿着客户端ID向Github请求授权码code。

const config = {  
    client_id: '28926186082164bbea8f', 
    client_secret: '07c4fdae1d5ca458dae3345b6d77a0add5a785ca'} 
router.get('/github/login', async (ctx) => {  
    var dataStr = (new Date()).valueOf();  //重定向到认证接口,并配置参数 
    var path = "https://github.com/login/oauth/authorize";  path += '?client_id=' + config.client_id;       //转发到授权服务器  ctx.redirect(path);})复制代码
  1. 用户跳转到Github,输入Github的用户名密码,表示用户同意使用Github身份登录第三方网站。此时就会带着授权码code跳回第三方网站。跳回的地址在创建该OAuth时已经设置好了。http://localhost:3000/github/callback

  2. 第三方网站收到授权码,就可以拿着授权码、客户端ID和客户端密钥去向Github请求access_token令牌。

  3. Github收到请求,向第三方网站颁发令牌。

  4. 第三方网站收到令牌,就可以暂时拥有Github一些请求的权限,比如说拿到用户信息,拿到这个用户信息之后就可以构建自己第三方网站的token,做相关的鉴权操作。

自己实现

google 举例

注册

client_id

你的注册ID

redirect_uri

你需要接收数据的地址

url

你的应用地址

response_type

返回类型 code 和token

client_secret 客户端密钥

用来给google 发送确认信息返回token的

前端发送链接

中转界面

用户在中转界面跳转

后端接收

后端发送code 给Google并请求用户数据

passport 实现

Last updated