第三方登录
凭据决定可用性
当前支持 Google 和 GitHub。apps/api/lib/auth.ts 的 socialProviders() 同时用于认证插件和公开能力列表,前端通过 config.socialProviders 显示入口。
| 服务 | 必须同时填写的变量 | 回调路径 |
|---|---|---|
GOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET | /api/auth/callback/google | |
| GitHub | GITHUB_CLIENT_ID、GITHUB_CLIENT_SECRET | /api/auth/callback/github |
两项都空时不启用;只填一项时配置诊断和服务端解析报错。密钥仅保存在服务端,能力查询只返回服务名称。
配置步骤
- 在对应服务创建应用,并选择正确的应用类型。
- 将完整回调地址设置为
APP_ORIGIN加上表中的路径。 - 在本地或目标 Worker 环境写入凭据,运行配置诊断并重启接口。
- 打开登录页,实际授权,检查回调后会话及账号邮箱。
本地 GitHub 回调示例为 http://localhost:4400/api/auth/callback/github。不同环境使用各自凭据和回调。GitHub OAuth 应用与 GitHub App 设置不同,后者还需要账号邮箱读取权限。
客户端调用
ts
const result = await auth.signIn.social({
provider: "github",
callbackURL: "/dashboard",
});
if (result.error) {
// 显示可重试的授权错误
}示例中的 auth 来自统一认证客户端。实际回跳地址应先通过站内地址校验,不能接受任意外站链接。
排查
入口不显示:检查能力查询及完整凭据。回调失败:检查域名、端口、协议和回调路径是否完全相同。邮箱缺失:检查授权范围与账号隐私设置。授权取消应回到可继续操作的登录页,不算登录成功。
新增其他服务时同步服务端凭据解析、能力查询、客户端入口及环境文档。当前 Google、GitHub 的真实外部授权仍需要使用自己的应用验收。