GitHub OAuth 认证示例

GitHub链接:github_auth

流程图

在这里插入图片描述

功能特性

  • ✅ GitHub OAuth 认证
  • ✅ 获取用户基本信息
  • ✅ 显示用户的 GitHub 仓库列表
  • ✅ 安全的会话管理
  • ✅ 响应式用户界面

技术栈

后端

  • Flask - Python Web 框架
  • Flask-CORS - 跨域资源共享
  • Requests - HTTP 库
  • Session - 会话管理

前端

  • React - 用户界面库
  • React Router - 路由管理
  • Axios - HTTP 客户端
  • CSS3 - 样式设计

项目结构

github_auth/
├── app.py                 # Flask 后端应用
├── package.json          # Node.js 依赖配置
├── public/
│   └── index.html        # HTML 模板
├── src/
│   ├── App.js            # React 主应用组件
│   ├── App.css           # 应用样式
│   ├── index.js          # React 入口文件
│   └── components/
│       ├── Home.js       # 首页组件
│       ├── AuthSuccess.js # 认证成功页面
│       └── Dashboard.js  # 用户仪表板
└── README.md

快速开始

前置要求

  • Python 3.11+
  • Node.js 16+
  • GitHub 账号

1. 创建 GitHub OAuth 应用

  1. 访问 GitHub Developer Settings
  2. 点击 “New OAuth App”
  3. 填写应用信息:
    • Application name: GitHub Auth Demo
    • Homepage URL: http://localhost:3000
    • Authorization callback URL: http://localhost:5000/auth/github/callback
  4. 获取 Client IDClient Secret

2. 配置环境

app.py 中更新你的 GitHub OAuth 配置:

GITHUB_CLIENT_ID = 'your_client_id_here'
GITHUB_CLIENT_SECRET = 'your_client_secret_here'

3. 安装依赖

后端依赖
# 使用 uv (推荐)
uv sync# 或使用 pip
pip install flask flask-cors requests
前端依赖
npm install

4. 启动应用

启动后端服务器
# 使用 uv
uv run python app.py# 或直接运行
python app.py

后端服务器将在 http://localhost:5000 启动

启动前端开发服务器
npm start

前端应用将在 http://localhost:3000 启动
在这里插入图片描述

5. 使用应用

  1. 打开浏览器访问 http://localhost:3000
  2. 点击 “使用 GitHub 登录” 按钮
  3. 在 GitHub 授权页面确认授权
  4. 成功登录后查看用户信息和仓库列表

API 端点

认证相关

  • GET /auth/github - 重定向到 GitHub OAuth 授权页面
  • GET /auth/github/callback - 处理 GitHub OAuth 回调
  • POST /api/logout - 用户登出

用户数据

  • GET /api/user - 获取当前登录用户信息
  • GET /api/repos - 获取用户的 GitHub 仓库列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84643.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度萝卜快跑携4颗禾赛激光雷达进军迪拜,千辆L4无人车开启全球化战略

3月28日,百度旗下自动驾驶出行服务平台“萝卜快跑”宣布在迪拜市区启动无人驾驶规模化测试及服务,计划部署超1000辆L4级全无人驾驶汽车。此次出海不仅是萝卜快跑首次在中国以外地区实现规模化落地,更以“单车搭载4颗禾赛激光雷达”的硬件配置引发行业关注,标志着中国自动驾…

湖北师范大学人工智能与计算机学院电子信息研究生课程《随机过程》第六次作业

一. 计算题(共10题,100分) 1. (计算题, 10分)随机信号 的实测样本函数如题图(a)与(b)所示, ,期中X为随机变量, ,试说明它们可能是均值各态历经的吗?(写明道理&#xff…

解决Windows Server打开DNS提示“拒绝访问”和“RPC服务器不可用”

问题背景 在一个活动目录域xyzz.internal中,有两台域控制器(Domain Controller),各位于一个站点。 问题 当我们在其中一台域控制器上的服务器管理器中打开DNS管理工具时,却看到类似如下错误,提示拒绝访问…

Python中字符串常用的操作方法

在Python中,字符串是不可变序列类型,提供了丰富的内置方法。以下是常用的字符串操作方法及示例: 1. 大小写转换 lower() 转小写 upper() 转大写 capitalize() 首字母大写 title() 每个单词首字母大写 swapcase() 大小写互换 print(&q…

利用百度/高德地图API实现车辆轨迹跟踪系统

利用百度/高德地图API实现车辆轨迹跟踪系统 摘要: 本文详细阐述了如何利用百度地图API或高德地图API构建一套完整的车辆轨迹跟踪系统。内容涵盖系统架构设计、数据采集与传输、地图API核心功能实现(地图展示、轨迹绘制、实时定位、历史轨迹回放)、关键优化技术(轨迹纠偏、…

解锁K-近邻算法:数据挖掘的秘密武器

目录 一、K - 近邻算法是什么二、算法原理深度剖析2.1 核心思想2.2 距离度量方式2.3 K 值的选择2.4 分类决策规则 三、K - 近邻算法实践3.1 准备数据集3.2 代码实现步骤3.3 结果分析与评估 四、K - 近邻算法优缺点4.1 优点阐述4.2 缺点分析 五、应用案例展示5.1 图像识别领域5.…

华为OD机试_2025 B卷_构成正方形数量(Python,100分)(附详细解题思路)

题目描述 输入N个互不相同的二维整数坐标&#xff0c;求这N个坐标可以构成的正方形数量。[内积为零的的两个向量垂直] 输入描述 第一行输入为N&#xff0c;N代表坐标数量&#xff0c;N为正整数。N < 100 之后的 K 行输入为坐标x y以空格分隔&#xff0c;x&#xff0c;y为整…

Qt:智能指针QScopedPointer使用

QScopedPointer和C中的智能指针std::unique_ptr其概念是一样的&#xff0c;它包装了new操作符在堆上分配的动态对象&#xff0c;能够保证动态创建的对象在任何时候都可以被正确地删除。但它有更严格的所有权&#xff0c;并且不能转让&#xff0c;一旦获取了对象的管理权&#x…

TensorFlow基础之理解计算图

Tensor Flow TensorFlow 本章介绍TensorFlow的基础。特别地&#xff0c;你将学习如何用TensorFlow进行基础计算。在开始使用 TensorFlow之前,你必须理解它背后的哲学。 这个库基于计算图的概念&#xff0c;如果你不理解计算图是如何工作的&#xff0c;你就不能理解如何使用这…

【HarmonyOS Next之旅】DevEco Studio使用指南(三十五) -> 配置构建(二)

目录 1 -> 定制HAP多目标构建产物 1.1 -> 定义产物的HAP包名 1.2 -> 定义产物的deviceType 1.3 -> 定义产物的distributionFilter 1.4 -> 定义产物preloads的分包 1.5 -> 定义产物的source源码集-pages 1.6 -> 定义产物的source源码集-sourceRoots…

[muduo] ThreadPool | TcpClient | 异步任务 | 通信测试

第九章&#xff1a;线程池&#xff08;ThreadPool&#xff09; 在第八章《TcpServer》中&#xff0c;我们了解到muduo::net::TcpServer通过EventLoop线程池处理入站连接。 这些EventLoop线程主要负责网络I/O&#xff1a;套接字读写和定时器处理&#xff0c;由Poller和Channel…

【笔记】解决部署国产AI Agent 开源项目 MiniMax-M1时 Hugging Face 模型下载报错解决方案

MiniMax-AI/MiniMax-M1&#xff1a;MiniMax-M1&#xff0c;世界上第一个开放权重、大规模的混合注意力推理模型。 一、问题背景 【笔记】解决部署国产AI Agent 开源项目 MiniMax-M1时 Hugging Face 模型下载缓存占满 C 盘问题&#xff1a;更改缓存位置全流程-CSDN博客 在执行hu…

新手如何利用AI助手Cursor生成复杂项目

新手如何利用AI助手Cursor生成复杂项目 在编程学习的道路上&#xff0c;AI工具正成为新手开发者的得力助手。本文将介绍如何借助Cursor这一强大的AI代码助手&#xff0c;从零开始构建复杂项目。 一、基础准备工作 作为编程新手&#xff0c;面对复杂项目时常常不知从何下手。利…

【Fargo】x264的intra refresh 3: 采集、编码到 RTP打包

实际调试默认并么有打开b_intra_refresh D:\XTRANS\thunderbolt\ayame\zhb-bifrost\player-only\echo\codec\x264\echo_h264_encoder.cpp 即使打开了b_intra_refresh,也不影响RTP打包: 但是有一些要注意的地方: RFC 6184(“RTP Payload Format for H.264 Video”) intra …

Vue3 的生命周期:从 Composition API 视角看

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

面向互联网大厂Java岗位面试:Spring Boot与微服务架构的深入探讨

面向互联网大厂Java岗位面试&#xff1a;Spring Boot与微服务架构的深入探讨 问题1&#xff1a;什么是Spring Boot&#xff0c;它如何简化Spring应用程序的开发&#xff1f; 简洁回答&#xff1a; Spring Boot是一个基于Spring框架的开源Java平台&#xff0c;旨在简化新Sprin…

【信号与系统四】采样和通信系统

在一定条件之下&#xff0c;一个连续时间信号完全可以用该信号在等时间间隔点上的值或样本来表示&#xff0c;并且可以用这些样本值把该信号全部恢复出来。这个稍微有点使人吃惊的性质来自于采样定理。 例如一帧一帧的电影画面&#xff0c;在我们大脑中构成连续的生活情节 接…

关于球面投影SphericalProjector的介绍以及代码开发

球面投影的几何背景 什么是球面投影&#xff1f; 球面投影将 2D 图像中的像素点&#xff08;通常是平面&#xff09;映射到一个虚拟的球面上&#xff0c;再将球面上的角度&#xff08;经度、纬度&#xff09;展开到平面图上。它是广角图像拼接、全景图生成中常用的投影方法。…

wordpress外贸独立站常用留言表单插件 contact form 7

Contact Form 7 介绍 Contact Form 7 是一款非常流行的 WordPress 联系表单插件&#xff0c;广泛应用于外贸独立站。以下是其主要特点&#xff1a; 功能强大且免费&#xff1a;Contact Form 7 是完全免费的&#xff0c;支持创建和管理多个联系表单。 简单易用&#xff1a;用…

佰力博科技与您探讨油浴极化的优点及工艺流程

一、油浴极化的优点 温度范围宽&#xff1a;油浴极化适用于较宽的温度范围&#xff0c;适合不同材料的极化需求。 绝缘强度高&#xff1a;油浴介质具有良好的绝缘性能&#xff0c;能够承受较高的极化电场。 防潮性好&#xff1a;油浴极化在潮湿环境中仍能保持良好的绝缘性能。 …