Supabase Apple OAuth在Next.js Web端配置失败求助
Apple OAuth 登录报错 "invalid_request Invalid client id or web redirect url" 排查方案
根据你提供的配置信息,结合Apple OAuth与Supabase的规则,以下是核心排查方向:
1. 重定向URL必须完全匹配(细节不能错)
Apple对重定向URL的校验极其严格,任何字符差异都会导致报错:
- 检查Apple开发者后台**服务ID(Service ID)**的"Sign in with Apple"配置中,添加的重定向URL是否和客户端传的
redirectTo完全一致,包括:- 协议:本地开发用
http://localhost:3000,生产环境必须用https - 路径末尾斜杠:你的
redirectTo是http://localhost:3000/auth/callback/(带末尾斜杠),Apple后台必须同步配置这个带斜杠的地址,不能是http://localhost:3000/auth/callback
- 协议:本地开发用
- 同时确认Supabase控制台的Apple OAuth配置里,"重定向URL"字段也和上述地址完全一致
2. 客户端ID必须用服务ID而非主App ID
Web端Apple登录要求使用**服务ID(Service ID)**作为OAuth客户端ID:
- 检查Supabase控制台Apple配置中的"客户端ID",是否填写的是你创建的服务ID(
com.{project}.web.auth.service),而非主App ID(com.{project}.web) - 确认Apple开发者后台中,该服务ID已启用"Sign in with Apple"功能,且关联了正确的主App ID
3. Apple密钥的权限与关联配置
确认上传到Supabase的P8密钥满足要求:
- 创建Apple密钥时,必须勾选"Sign in with Apple"权限,且关联了对应的主App ID(
com.{project}.web) - Supabase控制台中填写的"Apple账户ID"是你的Team ID,"密钥ID"是该P8密钥的ID,确保三者(密钥、Team ID、密钥ID)一一对应
4. 本地开发的特殊注意事项
如果是本地测试:
- Apple允许
localhost作为重定向URL,但必须在Apple开发者后台的服务ID中明确添加http://localhost:3000/auth/callback/(和客户端地址完全一致) - 测试时先去掉
next参数,只用基础回调地址,排除参数编码问题的干扰
5. 客户端代码的细节调整
检查redirectTo的生成逻辑:
- 当前代码在无
next参数时会自动添加末尾斜杠,若Apple后台配置的是无斜杠的auth/callback就会不匹配 - 可以先手动固定
redirectTo为http://localhost:3000/auth/callback(去掉末尾斜杠),同步更新Apple后台和Supabase的配置后再测试
内容的提问来源于stack exchange,提问作者Phil Lucks
相关产品推荐
相关产品推荐

