Python网页版如何实现OAuth登录_Python网页版第三方登录OAuth集成教程


答案:使用Flask和GitHub OAuth实现登录需先注册应用获取Client ID与Secret,再通过重定向授权页、接收code、换取access_token并获取用户信息三步完成集成。

python网页版如何实现oauth登录_python网页版第三方登录oauth集成教程

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 文件:

Copymatic Copymatic

Cowriter是一款AI写作工具,可以通过为你生成内容来帮助你加快写作速度和激发写作灵感。

Copymatic 149 查看详情 Copymatic
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/e8d0467189fccf2dff63796aa47202fc"
    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找产品  # 跳转到  # 第三步  # 三步  # 第二步  # 为例  # python  # 多个  # 回调  # 如何实现  # 第三方  # acces  # app  # 微信  # github  # go  # json  # git  # js  # python网页版  # python入门 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: C++ switch case字符串_C++如何实现字符串switch匹配  《豆瓣》私信用户方法  《广发易淘金》国债逆回购操作教程  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  b站怎么查看视频的码率_b站视频码率查看方法  wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式  《健康大兴》注册方法介绍  windows10怎么开启卓越性能_windows10电源选项代码激活  《盗墓笔记手游》技能介绍  画质怪兽120帧安卓和平精英免费版  word怎么将图片设置为页面背景并不影响打印_Word图片背景设置方法  《糖豆》添加舞曲方法  夸克浏览器资源嗅探怎么用 夸克浏览器网页资源下载技巧【教程】  德邦快递会员怎么开通  《知到》打卡课程方法  解决CSS容器溢出问题:使用calc()实现精确布局与边距控制  有道AI翻译入口 智能写作官方网站入口  t3出行如何使用微信支付  荣耀 Magic10 Pro 系统更新提示失败_荣耀 Magic10 Pro 升级修复  暴风影音官网正式版_暴风影音手机版官网下载安卓  谷歌邮箱官方入口链接 谷歌邮箱网页版电脑端快速登录  豆包AI怎样为教育场景定制答疑逻辑_为教育场景定制豆包AI答疑逻辑方案【方案】  《密马》发布账号方法  《下一站江湖2》独孤剑诀习得方法  J*aScript大数运算_BigInt使用指南  如何用Golang优化微服务间请求性能_Golang 微服务请求性能优化方法  如何在vscode中关闭it环境  《虎扑》关闭社区内容推荐方法  Eclipse开发J*a快速入门  百度网盘网页入口链接分享 百度网盘官网入口网页登录  Python测试中模块导入路径解析的最佳实践  《sketchbook》选中部分图案移动方法  抖音官网入口快速访问 抖音网页版账号注册解析  search中maxlength属性用法解析  汽水音乐网页端访问 汽水音乐官方网页直达  b站如何剪辑视频_b站必剪app使用教程  composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?  在PySimpleGUI中实现键盘按键绑定按钮事件  抖音号显示企业机构号是什么意思?企业机构号申请条件是什么?  OTT月报 | 2025年9月智能电视大数据报告  Google Cloud Functions 时区处理指南:理解与最佳实践  掌握CSS :has() 选择器:父选择器、嵌套限制与常见陷阱解析  邮政快递寄件查询入口 邮政快递收件查询入口  泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口  酷狗音乐多音轨设置教程  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  海外搜索引擎推广效果怎么样,怎么分析效果!  Excel如何快速合并单元格内容_Excel文本合并与函数操作技巧  CDR如何复制交互式填充色  如何自定义苹果手机铃声 

 2025-11-04

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.