在环境变量里配好 GitHub、Google、Microsoft、Discord、QQ,再设一个站点密钥。你的任意多个项目只接入这一处,就能用上全部社交登录——不用再逐个平台申请、配回调。
各平台 OAuth 凭证只在环境变量里配一次,回调地址也只注册一处。
设置了哪个平台的凭证,登录页就自动出现哪个,无需任何开关。
一个站点密钥可以给任意多个站点使用,新项目零额外申请即可接入。
配置全在环境变量里,三步完成一次登录
下游服务端对「回调地址+时间戳」用密钥算出 sign,跳转到 /authorize 带上 redirect_uri 与 sign(不带密钥)。
AuthHub 校验签名,带用户去对应平台授权,回调后把身份签成短效 code 发回。
你的服务端用 site_key + code 调 /token(密钥只在这个后端请求里),拿到 { user } 完成登录。
用托管登录页,或让站点完全自建登录 UI
跳到 AuthHub 的登录页,自动列出已启用平台。可用 providers 限定只显示哪些、以什么顺序。
/authorize?redirect_uri=…&ts=…&sign=… &providers=github,google // 只显示这两个(可选)
站点自己做按钮和样式,每个按钮直接指定 provider,跳过托管页、直达该平台授权。同一个 sign 对所有平台按钮通用。
<!-- 服务端渲染,ts/sign 由后端算好 --> <a href="/authorize?redirect_uri=…&ts=…&sign=… &provider=github">用 GitHub 登录</a> <a href="…&provider=qq">用 QQ 登录</a>
在 Cloudflare Pages → 设置 → 环境变量 中添加
设了哪个平台,哪个平台就自动出现在登录页。
SITE_KEY必填站点密钥(API Key)。用于:①对 /authorize 请求签名,②后端调 /token,③签发/校验 token。只放服务端,绝不写进前端或 URL。多个站点共用同一个值。
GITHUB_CLIENT_IDGITHUB_CLIENT_SECRET配了即启用 GitHub。其余同理:GOOGLE_* MICROSOFT_* DISCORD_* QQ_*。
APPLE_*Apple 专用Apple 无固定 secret,需 4 个变量:APPLE_CLIENT_ID(Services ID)、APPLE_TEAM_ID、APPLE_KEY_ID、APPLE_PRIVATE_KEY(.p8 内容);平台用 ES256 自动生成 client_secret。
ALLOWED_REDIRECT_HOSTS可选额外的回调域名白名单(逗号分隔,支持 *.example.com)。已有签名保护,通常无需设置;需要更严可加。
ISSUER可选强制指定对外域名(默认自动取请求域名)。
申请时把对应平台的回调地址填进去即可(已按当前域名生成)