搭建GitHub授权登录

这篇具有很好参考价值的文章主要介绍了搭建GitHub授权登录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 功能
  • 搭建

功能

实现GitHub授权,获取用户在GitHub的有关信息

搭建

  1. 注册app

在GitHub的setting->Developer Settings(开发者设置)中,点击New OAuth App(新建OAuth应用)

根据提示填写主页URL、回调URL等信息,并生成一个client_id与client_secre(客户端ID和客户端密钥。)

  1. 部署到客户端

在客户端定义一个登录按钮或链接,当用户点击时,会跳转到GitHub的登录页面。在跳转链接中,你需要包含以下参数:

  • client_id:客户端ID。
  • redirect_uri:回调url,用户登录成功后将被重定向到的URL。
  • scope:请求访问GitHub API的权限范围,如用户的公开资料、存储库访问等。
  • state:一个随机生成的字符串,用于防止跨站请求伪造攻击。
  1. 用户授权

...

  1. 获取访问令牌

在回调url时会附带一条授权码信息,拿到授权码(回调处理部署的位置就是回调url),

回调处理: 向GitHub的api发送一条POST请求来交换授权码和访问令牌。该请求需要包含以下参数:

client_id:客户端ID。 client_secret:客户端密钥。 code:重定向时收到的授权码。 redirect_uri:与之前的redirect_uri相同。

接收访问令牌:如果请求成功,GitHub将返回一个JSON响应,其中包含访问令牌。

  1. 前端vue模块示例

功能:实现授权登录

思路:

  1. 定义到GitHub授权页面,由用户进行授权

  2. 处理回调:

授权成功:发送post请求获取访问令牌

失败:处理展示失败信息

  1. 登录处理:向后端接口发起请求,携带访问令牌,由后端获取邮箱用户名等信息,在进行注册验证,验证邮箱是否注册,

如果已经注册就登录该邮箱对应的账号

如果未注册就根据邮箱生成新的账号,并登录新生成的账号

最后统一给改邮箱发送一份提醒邮件,登录提醒.

<template>
    <button @click="login">GitHub授权登录</button>
  </template>
  
  <script>
  import axios from 'axios';
  
  export default {
    methods: {
      async login() {
        try {
          const authorizationUrl = 'https://github.com/login/oauth/authorize';
          const clientId = '我的客户端id';
          const redirectUri = '我的回调url';
  
          // 发起授权请求,获取授权码
          const { code } = await this.getCode(authorizationUrl, clientId, redirectUri);
  
          // 使用授权码获取访问令牌
          const accessToken = await this.getAccessToken(code, clientId, redirectUri);
  
          // 发送访问令牌到后端进行处理
          await this.sendAccessToken(accessToken);
  
          // 处理成功后的逻辑
          console.log('访问令牌已发送到后端进行处理');
        } catch (error) {
          console.error('登录失败', error);
        }
      },
  
      async getCode(authorizationUrl, clientId, redirectUri) {
        const response = await axios.get(authorizationUrl, {
          params: {
            client_id: clientId,
            redirect_uri: redirectUri,
            scope: 'user',
          },
        });
  
        const code = response.data.code;
        return code;
      },
  
      async getAccessToken(code, clientId, redirectUri) {
        const tokenUrl = 'https://github.com/login/oauth/access_token';
        const response = await axios.post(tokenUrl, null, {
          params: {
            client_id: clientId,
            client_secret: '我的客户端密钥',
            code: code,
            redirect_uri: redirectUri,
          },
          headers: {
            Accept: 'application/json',
          },
        });
  
        const accessToken = response.data.access_token;
        return accessToken;
      },
  
      async sendAccessToken(accessToken) {
        const backendUrl = '我的后端处理接口';
        const data = {
          access_token: accessToken,
        };
  
        await axios.post(backendUrl, data);
      },
    },
  };
  </script>
  1. 获取用户信息 应用程序可以使用访问令牌发送请求来访问GitHub API获取用户的GitHub信息,例如获取用户的个人资料、操作存储库等。

golang后端处理

type User struct {
 Login string `json:"login"`
 Email string `json:"email"`
}

//github登录操作
//获取数据
func GetUserInfo(accessToken string) (*User, error) {
 url := "https://api.github.com/user"
 req, err := http.NewRequest("GET", url, nil)
 if err != nil {
  return nil, err
 }

 req.Header.Set("Authorization""Bearer "+accessToken)

 client := &http.Client{}
 resp, err := client.Do(req)
 if err != nil {
  return nil, err
 }
 defer resp.Body.Close()

 body, err := ioutil.ReadAll(resp.Body)
 if err != nil {
  return nil, err
 }

 user := &User{}
 err = json.Unmarshal(body, user)
 if err != nil {
  return nil, err
 }

 return user, nil
}

//后续处理
//后续就是MySQL和redis的增删改查操作
//....

本文由 mdnice 多平台发布文章来源地址https://www.toymoban.com/news/detail-479732.html

到了这里,关于搭建GitHub授权登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp开发小程序,实现获取【微信授权登录】功能

    APP微信授权登录需要到微信开放平台申请,在HBuilderX配置APP SDK中微信登录的appId,另外需要跟小程序、公众号授权账号互通的话也需要在微信开放平台申请 1、在微信公众平台申请应用,获取相应的appid和appsecret 2、在HBuilderX配置APP SDK中微信登录的appId和appsecret 微信授权登录(

    2024年02月09日
    浏览(40)
  • PHP实践:手把手微信公众号网页授权登录功能实现

    🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:PHP进阶实战教程。 🏆另有专栏PHP入门基础教程,希望各位大佬

    2024年02月12日
    浏览(39)
  • SpringCloud微服务实战——搭建企业级开发框架:第三方登录-微信小程序授权登录流程设计和实现

      在前面的设计和实现中,我们的微服务开发平台通过JustAuth来实现第三方授权登录,通过集成公共组件,着实减少了很多工作量,大多数的第三方登录直接通过配置就可以实现。而在第三方授权登录中,微信小程序授权登录和APP微信授权登录是两种特殊的第三方授权登录

    2024年02月07日
    浏览(40)
  • 微信公众平台测试号申请、使用HBuilder X与微信开发者工具实现授权登陆功能以及单点登录

    测试账号申请 测号响应流程:客户端发送请求,微信服务器收到请求后,转发到开发者服务器上,处理完后在发送给微信服务器,在返回给客户端 1、打开微信公众平台,点击测试帐号申请。地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login, 通过微信扫一扫授权就能进

    2024年02月02日
    浏览(42)
  • idea2021配置Git&GitHub&账号登录授权

    下载地址:https://git-scm.com/downloads 安装很简单,这里不多废话。 点击 GitManage Remotes…点\\\"+\\\"号添加别名和仓库地址 转圈圈的同时会弹出浏览器,打开授权界面、 点击授权按钮后,输入账号密码登录,并再次点击授权按钮 最终出现下面提示,则over! over之后再去idea看,发现已

    2023年04月08日
    浏览(31)
  • Django(二)精美博客搭建(1)实现登录/注册功能

    之前我们用 Django框架 做了一个很简单的个人博客搭建,不论是页面还是功能都很粗糙 所以从这篇开始我打算做一个比较完整的【个人博客网站】,可能会分好几篇博客来讲述 等所有功能完善的差不多后,再考虑上传github 那本篇呢,我们主要实现博客的基础框架搭建,以及

    2023年04月19日
    浏览(38)
  • 【深入浅出 Spring Security(十二)】使用第三方(Github)授权登录

    (Github授权登录的具体操作在目录第三“章”) 下面是《深入浅出Spring Security》书中的一段概述: OAuth 是一个开放标准(现在所说的 OAuth 一般都是指 OAuth2,即 2.0 版本),可以理解为是一种协议,该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如头

    2024年02月10日
    浏览(48)
  • 快速搭建Python(Django)+Vue环境并实现页面登录注册功能

    选择一个要存放代码位置,使用cmd进入该位置,然后输入 npm init vue@lastest 创建vue项目 然后输入项目名称,其余都选择NO 创建好项目之后,使用cd命令进入创建好项目的目录 执行 npm install 命令即可创建好一个vue项目 vue项目的启动命令为 npm run dev 使用VsCode打开创建的项目,删

    2024年02月16日
    浏览(25)
  • SpringBoot3.0 + SpringSecurity6.0 +OAuth2 使用Github作为授权登录

    1.1 OAuth是什么 开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供

    2024年02月11日
    浏览(33)
  • Github网站老是进不去(copilot插件老是掉线,登录github授权后,IDEA却一直显示在加载)的解决办法

    Window:C:WindowsSystem32driversetchosts 或 Linux:/etc/hosts 注:如果没找到的话,可以先看看是否关闭了“显示隐藏文件”,还是没有的话,就创建一个文本文件,删掉后缀,命名为hosts。 注:如果之前为了能进入Github,试过一些方法,放置过一些 IP 地址则全部删除再按步骤进行

    2024年02月11日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包