ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

django-allauth 集成 Figma 第三方登录:应用注册、回调配置与 OAuth2 源码实现解析

django-allauth 集成 Figma 第三方登录:应用注册、回调配置与 OAuth2 源码实现解析 后端认证鉴权身份认证【免费下载链接】django-allauthIntegrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Mirror of https://codeberg.org/allauth/django-allauth/项目地址https://gitcode.com/gh_mirrors/dj/django-allauth点击查看免费下载本指南以 django-allauth 仓库中 docs/socialaccount/providers/figma.rst 为骨架完整讲解如何为 Django 项目接入 Figma 第三方登录从 Figma 开发者平台注册应用、获取 Client ID/Secret、配置回调地址到启用figmaprovider、完成登录与账号绑定。读完本文你将能独立完成 Figma OAuth2 登录的最小可用配置并理解其底层调用链与用户数据提取逻辑。一、前置准备在 Figma 开发者平台注册应用接入 Figma OAuth2 的第一步是在 Figma 官方开发者平台创建 OAuth 应用以获取后续配置所必需的Client IDkey与Client Secretsecret。原文档明确指出应用注册入口为应用注册地址获取 key 和 secrethttps://www.figma.com/developers/apps创建应用时平台会要求你填写应用名称、重定向回调地址等基本信息。注册完成后妥善保存页面上展示的 Client ID 与 Client Secret——它们将分别作为 django-allauth 侧SOCIALACCOUNT_PROVIDERS配置中的client_id与secret字段。二、开发环境回调地址OAuth2 授权码流程要求第三方平台在授权完成后将用户重定向回你的站点因此必须在 Figma 应用配置中登记回调地址。原文档给出的开发环境回调 URL 为http://localhost:8000/accounts/figma/login/callback/该地址由两部分组成站点根地址http://localhost:8000对应本地 Django 开发服务器默认端口若使用其他端口需同步修改回调路径/accounts/figma/login/callback/由 django-allauth 的 URL 路由自动生成见下文“路由与回调链路”一节无需手工编写视图。生产环境部署时将http://localhost:8000替换为你的正式域名并在 Figma 开发者平台中同步登记该生产回调地址任何未登记的地址都会在授权回调时被 Figma 拒绝。三、启用 Figma Provider1. 安装并注册应用django-allauth 将 Figma 登录能力封装为独立的 Django 应用allauth.socialaccount.providers.figma启用方式是在INSTALLED_APPS中加入该应用。参考仓库 docs/installation/quickstart.rst 的完整安装清单示例配置如下INSTALLED_APPS [ django.contrib.admin, django.contrib.auth, django.contrib.contenttypes, django.contrib.sessions, django.contrib.messages, django.contrib.sites, # allauth 核心 allauth, allauth.account, allauth.socialaccount, # 第三方提供商 allauth.socialaccount.providers.figma, ]随后执行数据迁移创建社交账户相关数据表python manage.py migrate2. 配置 Provider 凭据在 Django 设置文件中通过SOCIALACCOUNT_PROVIDERS字典配置 Figma 应用凭据该设置项的完整说明参见 docs/socialaccount/configuration.rstSOCIALACCOUNT_PROVIDERS { figma: { APP: { client_id: 你的-Figma-Client-ID, secret: 你的-Figma-Client-Secret, } } }client_id与secret即第一步在 Figma 开发者平台获取的 key 与 secret。也可以不在此处硬编码而是通过 Django Admin 的“社交应用Social applications”管理界面创建SocialApp记录provider 选择Figma并将站点关联到该应用——两种方式最终都会为授权流程提供相同的凭据。四、URL 路由与登录入口Figma 登录无需手工编写视图或路由。仓库中 allauth/socialaccount/providers/figma/urls.py 仅有如下内容from allauth.socialaccount.providers.figma.provider import FigmaProvider from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns urlpatterns default_urlpatterns(FigmaProvider)default_urlpatterns定义于 allauth/socialaccount/providers/oauth2/urls.py为每个 provider 统一生成两条路由login/跳转到 Figma 授权页的登录视图对应figma_loginlogin/callback/接收 Figma 授权回调的视图对应figma_callback。因此只要你已在根 URLconf 中include(allauth.socialaccount.urls)上述回调地址/accounts/figma/login/callback/即自动生效。登录链接可通过模板标签生成例如{% load socialaccount %} a href{% provider_login_url figma %}使用 Figma 登录/a五、OAuth2 端点与登录流程源码解析1. 三个关键端点Figma provider 的 OAuth2 适配器定义于 allauth/socialaccount/providers/figma/views.py其中明确声明了 Figma 平台的三个核心端点用途URL源码位置授权端点authorizehttps://www.figma.com/oauthviews.pyauthorize_url换取令牌端点tokenhttps://www.figma.com/api/oauth/tokenviews.pyaccess_token_url用户信息端点userinfohttps://api.figma.com/v1/meviews.pyuserinfo_url这些端点继承自基类OAuth2Adapter见 allauth/socialaccount/providers/oauth2/views.py基类还负责令牌解析parse_token从响应中读取access_token并将refresh_token存入token_secret、依据expires_in计算过期时间。2. 完整登录调用链Figma 登录走标准的 OAuth2 授权码流程由通用视图OAuth2LoginView与OAuth2CallbackView驱动用户访问login/OAuth2LoginView将用户重定向至https://www.figma.com/oauth附带client_id、redirect_uri即/accounts/figma/login/callback/的绝对地址、state等参数用户在 Figma 页面授权后Figma 携带授权码code重定向回login/callback/OAuth2CallbackView使用授权码向https://www.figma.com/api/oauth/token发起 POST 请求换取访问令牌access_token_method默认为POST随后调用适配器的complete_login拉取用户信息并构造SocialLogin。3. complete_login 的实现细节views.py 中的complete_login展示了令牌的使用方式def complete_login(self, request, app, token, **kwargs): headers {Authorization: fBearer {token.token}} with get_adapter().get_requests_session() as sess: resp sess.get(self.userinfo_url, headersheaders) resp.raise_for_status() extra_data resp.json() return self.get_provider().sociallogin_from_response(request, extra_data)即将 OAuth2 访问令牌以Authorization: Bearer token的形式附加到请求头请求https://api.figma.com/v1/me获取当前用户资料再把返回的 JSON 交给 provider 完成登录对象构造。这里的get_requests_session()走 django-allauth 统一的会话管理见 allauth/socialaccount/adapter.py。六、用户数据提取与账号绑定用户资料如何映射为 Django 用户字段由 provider 类 allauth/socialaccount/providers/figma/provider.py 定义class FigmaProvider(OAuth2Provider): id figma name Figma account_class FigmaAccount oauth2_adapter_class FigmaOAuth2Adapter def extract_uid(self, data): return str(data[id]) def extract_common_fields(self, data): return { email: data.get(email), name: data.get(handle), } def extract_email_addresses(self, data): email EmailAddress( emaildata.get(email), primaryTrue, verifiedFalse, ) return [email]idprovider 标识符即 URL 中的figma段同时用于SOCIALACCOUNT_PROVIDERS字典的键extract_uid以 Figma 用户 API 返回的id字段作为社交账户的唯一标识用于账号去重与关联extract_common_fields将 Figma 的handle用户名映射为 Django 用户nameemail直接透传extract_email_addresses把 Figma 邮箱生成为EmailAddress记录标记为主邮箱primaryTrue。注意verifiedFalse——邮箱验证状态由 Figma 侧返回的数据决定django-allauth 并未将其视为已验证邮箱这符合第三方登录邮箱默认不可信的保守策略。此外FigmaAccount类提供get_avatar_url()从extra_data[img_url]读取 Figma 头像地址供模板中显示用户头像使用。provider 定义文件末尾通过providers.registry.register(FigmaProvider)完成注册这也是所有 provider 的通用注册方式provider 基类见 allauth/socialaccount/providers/base/provider.py。七、常见问题与排障回调地址不匹配redirect_uri mismatch请逐一核对 Figma 开发者平台登记的回调地址、Django 站点配置中的域名SITE_ID对应站点的 domain需与回调绝对地址的域名一致含http://localhost:8000或生产域名以及实际访问地址是否三者一致。邮箱未验证导致的流程中断由于extract_email_addresses将邮箱标记为verifiedFalse若项目启用了“邮箱验证后才可登录”等严格策略Figma 登录后可能要求用户额外验证邮箱。可通过调整ACCOUNT_EMAIL_VERIFICATION等账户设置适配业务需求参见 docs/account/configuration.rst。生产环境必须使用 HTTPSOAuth2 回调涉及令牌交换生产环境应确保站点启用 HTTPS并在 Figma 平台登记对应的https://回调地址。用户信息拉取失败complete_login中resp.raise_for_status()会在 Figma 用户信息端点返回非 2xx 时抛出异常请检查令牌是否有效、应用是否仍处于可用状态如已被删除或令牌被撤销。八、延伸阅读Figma provider 文档原始出处docs/socialaccount/providers/figma.rst全部已支持 provider 索引docs/socialaccount/providers/index.rst完整安装步骤docs/installation/quickstart.rst社交账户通用配置与SOCIALACCOUNT_PROVIDERS说明docs/socialaccount/configuration.rstFigma provider 实现源码provider.py、views.py、urls.pyOAuth2 通用适配器与路由生成逻辑oauth2/views.py、oauth2/urls.py赞分享后端认证鉴权身份认证【免费下载链接】django-allauthIntegrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Mirror of https://codeberg.org/allauth/django-allauth/项目地址https://gitcode.com/gh_mirrors/dj/django-allauth点击查看免费下载相关推荐思源宋体TTF字体专业设计师的5个隐藏优势与实战应用思源宋体TTF字体专业设计师的5个隐藏优势与实战应用 还在为中文排版的专业性与美观度难以兼顾而烦恼吗思源宋体TTF字体或许是你未曾发现的秘密武器。这款由Ad后端认证鉴权身份认证CogVideoX 文生视频本地实操从一条命令推理到 LoRA 微调CogVideoX 文生视频本地实操从一条命令推理到 LoRA 微调 CogVideo 是智谱 AI 开源的文生视频 / 图生视频模型目前主力是 CogVi后端认证鉴权身份认证Label Studio 时间序列与音视频同步标注指南基于时间与基于索引的配置方案Label Studio 时间序列与音视频同步标注指南基于时间与基于索引的配置方案 本指南以 Label Studio 官方时间序列模板 timeseries后端认证鉴权身份认证上一篇AtlasOS终极指南如何让你的Windows系统运行如飞性能提升50%下一篇FinBERT-FLS震撼发布金融前瞻语句智能分类的终极解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表