github第三方登录超详细流程及分析(小白笔记)

github第三方登录

本质就是OAuth授权

分析

  • 应用开发方先在第三方的开放认证平台申请app的授权,得到id和key
  • 应用前端账号密码登录区域,提供入口让用户跳到第三方的授权登录页
    • 跳转链接:https://github.com/login/oauth/authorize
    • 要传什么参数?client_id和回调地址
  • 授权页面,用户进行确认(如果没有登录,需要登录)
    • github会返回授权码code,同时将请求转发到回调地址
  • 应用的后端,需要有接口和回调地址的url匹配,接收到请求,取得code参数,然后拼上申请app时候的client_id和client_secret,向github服务器请求access_token:https://github.com/login/oauth/access_token?client_id=1436c0515ef5a23d836d&client_secret=7a213666ac6c4cec2ea11c2e0666290e46bf0917&code=b35231aea7336239139d
  • github服务器校验参数合法,会在在响应体中放上token,发回回调地址
  • 应用后端接收到token后,继续向github发起请求用户数据的接口请求,带上请求头和token:https://api.github.com/user

详细

1. 申请应用

1.注册Github账号

https://github.com/。如果已有则忽略该步骤,直接进入第二步。

2.创建第三方应用

  • 进入通过右上角进入个人设置页:https://github.com/settings/profile

  • 然后进入第三方应用页面:https://github.com/settings/developers

  • 在应用管理页面,选择OAuth App,然后点击右上方的New OAuth App按钮进入新建应用页面

    • 出现如下界面

Application name 一般填写自己的网站名称即可
Application description 一般填写自己的应用描述即可
Homepage URL 填写自己的网站首页地址
Authorization callback URL 重点,该地址为用户授权后需要跳转到的自己网站的地址,默认携带一个code参数

以上信息输入完成后,点击下方绿色的Register applaction按钮创建应用。创建完成后,点击进入应用详情页,可以看到应用的密钥等信息

copy以下三个信息:Client IDClient SecretAuthorization callback URL

2. 代码编写

2.1 引入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

2.2 application.yml配置文件

spring:
  security:
    oauth2:
      client:
        registration:
          github:
            clientId: ****************
            clientSecret: ****************
server:
  port: ****

Client IDClient Secret对应你刚才获取的id和secret,port端口号

本来打算通过thymeleaf进行页面最终跳转展示的,但最后在postman中测试始终拿不到token,于是便启了一个vue前端项目,加个按钮进行请求跳转,也很简单

2.3 Vue配置

 <button @click="login()">github第三方登录</button>
 
  login() {
      alert('click')
      const authorize_uri = 'https://github.com/login/oauth/authorize'
      const client_id = '********'
      const redirect_url = 'http://localhost:8080/login/oauth2/code/github'
      window.location.href = `${authorize_uri}?client_id=${client_id}&redirect_url=${redirect_url}`
    }

这里的redirect_url就是之前你自己给的Authorization callback URL

2.4 操作流程

启动前后端项目即可,注意在这之前一定清你的idea、谷歌的缓存,一次不行就多清几遍

  • 点击登录(在这之前打开控制台,因为要获取code)

  • 输入账号密码登录完成后将会进入授权页面
  • 点击同意授权即可完成github的oauth登录。

在控制台找到如下一个请求

复制code去postman进行测试向github服务器请求access_token:https://github.com/login/oauth/access_toke

之后发送获取个人信息请求,注意Authorization的选择

3. 授权结果

{
  "code": 2000,
  "msg": null,
  "data": {
    "uuid": "xxx",
    "username": "zhangyd-c",
    "nickname": "yadong.zhang",
    "avatar": "https://avatars3.githubusercontent.com/u/12689082?v=4",
    "blog": "https://www.zhyd.me",
    "company": "",
    "location": "Beijing",
    "email": "yadong.zhang0415@gmail.com",
    "remark": "心之所向,无所不能",
    "gender": "UNKNOWN",
    "source": "GITHUB",
    "token": {
      "accessToken": "6bb4228efdxxxxxx578148e3",
      "expireIn": 0,
      "refreshToken": null,
      "uid": null,
      "openId": null,
      "accessCode": null,
      "unionId": null,
      "scope": null,
      "tokenType": "bearer",
      "idToken": null,
      "macAlgorithm": null,
      "macKey": null,
      "code": null
    }
  }
}

进一步实现接下一版:https://blog.csdn.net/qq_43516238/article/details/105941193
谢谢,欢迎留言交流

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将 GitHub 第三方登录接入到你的应用程序中,你可以按照以下步骤进行操作: 1. 创建一个 GitHub 开发者帐户:在 GitHub 上创建一个帐户(如果你还没有)。然后登录到你的帐户并导航到开发者设置页面。 2. 创建一个新的 OAuth 应用程序:在开发者设置页面中,点击 "New OAuth App" 按钮创建一个新的应用程序。填写应用程序的名称、主页 URL(可以是你的应用程序网站)、回调 URL(GitHub 会将用户重定向到此 URL),并选择适当的权限范围。 3. 获取应用程序的客户端 ID 和客户端密钥:创建应用程序后,你将获得一个客户端 ID 和一个客户端密钥。这些信息将在后续步骤中使用。 4. 在你的应用程序中实现登录功能:根据你所使用的编程语言和框架,找到适当的库或插件来帮助你实现 GitHub 第三方登录功能。不同语言和框架可能有不同的实现方式,你可以参考 GitHub 的官方文档或搜索相关示例代码。 5. 配置登录回调处理:当用户使用 GitHub 登录成功后,GitHub 会将用户重定向到你在步骤 2 中设置的回调 URL。在你的应用程序中,需要处理这个回调请求,并从中提取授权码或访问令牌。使用这些令牌,你可以与 GitHub API 进行交互,获取用户的信息或执行其他操作。 6. 使用 GitHub API:一旦用户成功登录并授权你的应用程序,你可以使用 GitHub API 访问用户的存储库、个人信息等。根据你的需求,调用适当的 API 端点来获取所需的数据。 这些步骤涵盖了一个基本的 GitHub 第三方登录接入流程。具体实现方式可能因你所使用的编程语言和框架而有所不同,但上述步骤应该能够帮助你开始进行接入。记得在实际开发过程中查阅相关文档和示例代码,以确保正确地实现登录功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老子裤子马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值