新闻中心
Python网页版如何实现OAuth登录_Python网页版第三方登录OAuth集成教程
答案:使用Flask和GitHub OAuth实现登录需先注册应用获取Client ID与Secret,再通过重定向授权页、接收code、换取access_token并获取用户信息三步完成集成。

Python网页版如何实现OAuth登录?
在现代Web开发中,用户通过第三方平台(如微信、GitHub、Google、QQ等)一键登录已成为标配。这种机制依赖于OAuth 2.0协议,它允许用户授权你的应用访问其在第三方平台上的信息,而无需暴露密码。
如果你正在使用Python构建网页应用(比如Flask或FastAPI),集成OAuth登录其实并不复杂。本文将带你一步步完成从注册应用到实际登录的全过程,以GitHub为例演示如何在Python网页应用中实现OAuth登录。
1. 注册OAuth应用并获取凭证
要使用OAuth登录,首先需要在目标平台注册你的应用:
- 访问 GitHub Developer Settings
- 填写应用名称、主页URL(如 http://localhost:5000)和回调地址(Callback URL,如 https://www.php.cn/link/5b592a9e37c3474d12c4a05a1ef50598)
- 提交后获得 Client ID 和 Client Secret
这些凭证是后续通信的基础,务必保存好,尤其是Client Secret不要泄露。
2. 使用Flask搭建基础网页应用
我们以轻量级框架 Flask 为例,快速搭建一个支持OAuth登录的页面。
安装依赖:
pip install flask requests python-dotenv
创建 app.py 文件:
VALL-E
VALL-E是一种用于文本到语音生成 (TTS) 的语言建模方法
134
查看详情
import os
from flask import Flask, redirect, request, jsonify
import requests
from dotenv import load_dotenv
<p>load_dotenv()</p><p>app = Flask(<strong>name</strong>)</p><h1>GitHub OAuth 配置</h1><p>CLIENT_ID = os.getenv('CLIENT_ID')
CLIENT_SECRET = os.getenv('CLIENT_SECRET')
REDIRECT_URI = '<a href="https://www.php.cn/link/5b592a9e37c3474d12c4a05a1ef50598">https://www.php.cn/link/5b592a9e37c3474d12c4a05a1ef50598</a>'</p><p>@app.route('/')
def index():
return '<a href="/login">使用GitHub登录</a>'</p><p>@app.route('/login')
def login():</p><h1>跳转到GitHub授权页面</h1><pre class="brush:php;toolbar:false;">github_url = (
f"https://www.php.cn/link/e8d0467189fccf2dff63796aa4720
2fc"
f"?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope=user"
)
return redirect(github_url)@app.route('/login/callback') def callback(): code = request.args.get('code') if not code: return '授权失败', 400
# 第二步:用code换取access_token
token_url = 'https://www.php.cn/link/b96c50b7b132bacf5adba4adca9a4f10'
data = {
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
'code': code,
'redirect_uri': REDIRECT_URI
}
headers = {'Accept': 'application/json'}
response = requests.post(token_url, data=data, headers=headers)
token_json = response.json()
access_token = token_json.get('access_token')
if not access_token:
return '获取令牌失败', 401
# 第三步:用access_token获取用户信息
user_response = requests.get(
'https://www.php.cn/link/5cf804803360a972e4d810f6bd181881user',
headers={'Authorization': f'Bearer {access_token}'}
)
user_data = user_response.json()
return jsonify({
'message': '登录成功',
'user': user_data
})if name == 'main': app.run(port=5000, debug=True)
创建 .env 文件保存密钥:
CLIENT_ID=your_github_client_id CLIENT_SECRET=your_github_client_secret
3. 运行流程说明
整个OAuth登录流程分为三步:
- 第一步:跳转授权页 — 用户点击“登录”按钮后,跳转到GitHub的授权页面,确认是否允许你的应用访问其信息。
- 第二步:接收授权码(code) — 授权成功后,GitHub会重定向回你设置的回调地址,并附带一个临时的code。
- 第三步:换取access_token — 你的服务器用这个code加上Client Secret向GitHub请求正式的access_token。
- 第四步:获取用户数据 — 拿到token后,调用API获取用户基本信息(如用户名、头像、邮箱等),完成登录。
注意:access_token应妥善管理,可用于后续API调用或绑定本地账户系统。
4. 安全与扩展建议
- 生产环境务必使用HTTPS,避免token泄露
- 可结合Session或JWT保存登录状态
- 支持多个平台(如Google、微信、微博)时,可使用 Authlib 或 python-social-auth 简化集成
- 微信等国内平台也支持OAuth2,但接口路径和参数略有不同,需查阅官方文档
例如使用 Authlib 可统一管理多个OAuth客户端,代码更简洁:
from authlib.integrations.flask_client import OAuth <p>oauth = OAuth(app) github = oauth.register( name='github', client_id=CLIENT_ID, client_secret=CLIENT_SECRET, access_token_url='<a href="https://www.php.cn/link/b96c50b7b132bacf5adba4adca9a4f10">https://www.php.cn/link/b96c50b7b132bacf5adba4adca9a4f10</a>', authorize_url='<a href="https://www.php.cn/link/e8d0467189fccf2dff63796aa47202fc">https://www.php.cn/link/e8d0467189fccf2dff63796aa47202fc</a>', api_base_url='<a href="https://www.php.cn/link/5cf804803360a972e4d810f6bd181881">https://www.php.cn/link/5cf804803360a972e4d810f6bd181881</a>' )
基本上就这些。只要理解OAuth流程,用Python实现第三方登录非常直接。关键是处理好回调、token交换和用户信息解析三个环节。
以上就是Python网页版如何实现OAuth登录_Python网页版第三方登录OAuth集成教程的详细内容,更多请关注其它相关文章!
# 为例
# 物联网SEO
# 南昌建设厅网站
# seo可以刷上去么
# 独立站seo多少钱
# 珠海网站建设基本流程
# 教育网站怎么做推广
# seo软件外包
# 支付宝推广营销员难吗
# 什么是SEO值
# 武汉关键词推广软件排名
# 重定向
# 跳转到
# 第三步
# 三步
# 第二步
# python
# 多个
# 回调
# 如何实现
# 第三方
# acces
# app
# 微信
# github
# go
# json
# git
# js
# python网页版
# python入门
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
AO3最新入口2025公告_AO3中文官网合集
怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】
mysql备份恢复性能优化_mysql备份恢复性能优化方法
汽水音乐在线解析 汽水音乐在线解析入口
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
邮政快递单号查询入口 邮政快递物流信息在线查询入口
在React函数组件中利用原生HTML5进行邮箱地址验证
汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口
支付宝如何设置安全保护_支付宝安全设置的全面教程
Lar*el 递归关系中排除指定分支的教程
Mac怎么查看崩溃日志_Mac控制台错误报告分析
Python实时数据流中的动态最值查找策略
J*aScript异步迭代器_j*ascript异步遍历
小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】
QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口
谷歌推RCS信息存档功能:公司可监控员工私密信息!
高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】
J*aScript Promise链中如何正确终止后续.then执行并处理错误
深入理解Go语言中的指针类型:以*string为例
学习通在线学习平台 学习通网页版直接进入课程中心
我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口
Lar*el Excel导入时生成自定义递增ID的策略与实践
现代化 SciPy 一维插值:interp1d 的替代方案与最佳实践
凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法
实现全屏滚动与导航点:专业教程
如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构
css元素hover动画延迟生效怎么办_使用animation-delay调整触发时间
在Qt QML中通过Python字典动态更新TextEdit内容的教程
C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件
J*aScript 字符串标签转换:使用正则表达式高效替换
汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口
多闪网页版在线观看免费入口_多闪官网访问入口
解决 Express.js 中 PUT 请求密码修改失败的路由配置指南
fishbowl官网免费版 fishbowl养鱼网站入口
J*aScript动态修改指定div内所有a标签样式指南
必由学网页版入口 必由学官方平台直接访问
qq游戏免费畅玩入口_qq游戏电脑版快速启动
如何在Promise链中优雅地中断后续then执行
Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问
限制HTML日期输入框的日期选择范围
Python自定义类排序:解决lambda键值访问TypeError的实践指南
深入理解J*aScript Promise异步执行与微任务队列
三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升
Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐
mc.js免安装版 mc.js一键畅玩入口
win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】
TikTok网页版直接登录 TikTok网页端官方平台入口
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
千牛数据看板网页版_千牛数据看板网页版访问方法
html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】


2025-11-04
浏览次数:次
返回列表
2fc"
f"?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope=user"
)
return redirect(github_url)