Supabase Apple Login on Android
复制一个包含安装步骤和本插件的完整 Markdown 指南的设置提示.
前提条件
前提条件部分本指南将帮助您在 Android 上将 Apple Sign-In 与 Supabase 身份验证集成。假设您已经完成:
- __CAPGO_KEEP_0__ Supabase Apple 登录 - 一般设置.
步骤 1:部署后端 Edge Function
步骤 1:部署后端 Edge Function首先,我们需要部署 Supabase Edge Function 来处理 Apple OAuth 回调。
-
导航到您的 Supabase 项目目录
终端窗口 cd your-project/supabase -
创建边缘函数 (如果不存在)
终端窗口 supabase functions new apple-signin-callback -
复制边缘函数 code
完整的边缘函数实现可在示例应用中找到 复制以下文件到您的项目中:.
- 主边缘函数 __CAPGO_KEEP_0__
supabase/functions/apple-signin-callback/index.ts- Main edge function codesupabase/functions/apple-signin-callback/deno.json用于 JWT 签名的库jose配置 JWT 验证
-
配置 JWT 验证
The Apple OAuth callback endpoint must be public (no authentication required) because Apple will redirect to it. Update your
supabase/config.toml文件:[functions.apple-signin-callback]enabled = trueverify_jwt = false # Important: Set to false for public OAuth callbackimport_map = "./functions/apple-signin-callback/deno.json"entrypoint = "./functions/apple-signin-callback/index.ts" -
部署函数
终端窗口 supabase functions deploy apple-signin-callback -
获取函数 URL
部署后,你会得到一个类似这样的 URL:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback如果您找不到它,以下是您可以尝试的方法:
- 打开
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - 点击
apple-signin-callback函数URL以复制它。
- 打开
第 2 步:配置 Apple Developer Portal
第 2 步:配置 Apple Developer Portal现在我们需要使用后端 URL 配置 Apple Developer Portal 并获取所需的所有值。
-
按照 Apple Login Android Setup Guide 的步骤进行
完成 Apple Login Android Setup 指南 到:
- 创建 Service ID
- 生成私钥 (.p8 文件)
- 获取您的 Team ID 和 Key ID
- 配置 Return URL
-
在 Apple Developer Portal 中设置 Return URL
当在 Apple 开发者门户中配置 Return URL(Apple 指南第 6.9 步)时,请使用您的 Supabase Edge Function URL:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback重要:使用 Supabase Edge Function URL
不要 使用 Apple Login Android 设置指南中的重定向 URL。 . 这个指南使用自定义后端服务器 URL。为了 Supabase 集成,您 必须 使用您的 Supabase Edge Function URL 代替。
-
收集所有必需的值
完成 Apple 设置指南后,您应该有:
- APPLE_TEAM_ID:您的 Apple 开发者团队 ID
- APPLE_KEY_ID:来自 Apple 开发者门户的密钥 ID
- APPLE_PRIVATE_KEY:您的 .p8 私钥文件(需要 base64 编码)
- ANDROID_SERVICE_ID:您的 Apple 服务 ID(例如,
com.example.app.service) - BASE_REDIRECT_URL:您的深度链接URL(例如,
capgo-demo-app://path)
步骤 3:设置 Supabase 秘密值
步骤 3:设置 Supabase 秘密现在我们需要配置环境变量(秘密)以便于 Supabase Edge 功能
-
编码您的私钥
首先,编码您的 Apple 私钥 (.p8 文件) 为 base64:
终端窗口 base64 -i AuthKey_XXXXX.p8复制整个输出(它是一个单独的长字符串)
-
使用 Supabase 设置秘密 CLI
终端窗口 supabase secrets set APPLE_TEAM_ID=your_team_idsupabase secrets set APPLE_KEY_ID=your_key_idsupabase secrets set APPLE_PRIVATE_KEY=your_base64_encoded_keysupabase secrets set ANDROID_SERVICE_ID=your.service.idsupabase secrets set BASE_REDIRECT_URL=your-app://pathsupabase secrets set APPLE_REDIRECT_URI=https://your-project-ref.supabase.co/functions/v1/apple-signin-callback -
如果您更喜欢使用仪表板:
如果您更喜欢使用仪表板:
- 前往您的 Supabase 项目仪表板
- 导航至 边缘功能 → 设置 → 密钥
- 为每个密钥变量添加其值
步骤 4:使用身份验证助手
标题为“步骤 4:使用身份验证助手”现在您可以在应用程序中使用身份验证助手 code.
实现
标题为“实现”The complete implementation is available in the example app的 supabaseAuthUtils.ts 文件中。
使用身份验证助手
标题:使用身份验证助手import { authenticateWithAppleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithAppleSupabase();if (result.success) { console.log('Signed in:', result.user); // Navigate to your authenticated area} else { console.error('Error:', result.error);}更新助手函数
标题:更新助手函数当使用助手函数时,您 authenticateWithAppleSupabase 必须 更新以下值以匹配您的配置:__CAPGO_KEEP_0__ __CAPGO_KEEP_1__
-
更新
redirectUrl- 将其设置为您的 Supabase Edge Function URL:const redirectUrl = platform === 'android'? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
更新
clientId- 将其设置为您的 Apple Service ID:await SocialLogin.initialize({apple: {clientId: isIOS? undefined // iOS uses bundle ID automatically: 'your.service.id.here', // Your Apple Service ID for AndroidredirectUrl: redirectUrl,},});
__CAPGO_KEEP_0__ 完整实现 用于参考。
步骤 5:测试集成
步骤 5:测试集成-
构建并运行您的 Android 应用
终端窗口 npx cap sync androidnpx cap run android -
测试身份验证流程
- 点击“使用 Apple 登录”按钮
- 您应该在浏览器中看到 Apple OAuth 页面
- 验证后,您应该被重定向回您的应用
- 检查控制台日志以查看是否有错误
-
验证流程
完整的流程应该是:
- 用户点击“使用Apple登录”
- 应用程序打开Apple OAuth的浏览器
- 用户使用Apple登录
- Apple重定向到:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback - 边缘函数交换code为令牌
- 边缘函数重定向到:
your-app://path?id_token=...&access_token=... - 安卓应用程序接收深度链接并处理身份令牌
- 应用程序使用身份令牌登录Supabase
故障排除
标题:故障排除If authentication fails:
- 重定向 URI 不匹配: 确认 Apple Developer Portal 中的 Return URL 与
APPLE_REDIRECT_URIsecret - 深度链接无法正常工作: 检查
AndroidManifest.xmlintent 过滤器是否与BASE_REDIRECT_URL - 缺少密钥: 确认使用
supabase secrets list - Token 交换失败: 检查 Supabase 控制台中的 Edge Function 日志以获取详细错误信息
- 应用程序未接收回调: 确保
onNewIntent在 MainActivity 中正确实现 - Review the 示例应用程序 code 用于参考
如何工作
标题为“如何工作”在 Android 上,Apple Sign-In 使用 OAuth 重定向流程:
- 初始化: 使用您的 Service ID 和后端重定向 URL 初始化插件
- OAuth 流: 打开 Apple 的 OAuth 页面的浏览器/Chrome 自定义标签
- 后端回调: Apple redirects to your Supabase Edge Function with an authorization code
- 令牌交换: 边缘函数使用 Apple 的令牌端点交换 code 为令牌
- 深度链接重定向: 边缘函数将身份令牌重定向回您的应用
- Supabase 身份验证: 应用接收令牌并登录 Supabase
此流程是必要的,因为 Apple 没有为 Android 提供 native Sign in with Apple 支持。
从 Supabase Apple 登录继续
标题:从 Supabase Apple 登录继续如果您正在使用 Supabase Apple Login on Android 为 Android 设备规划身份验证和帐户流程,连接它 使用 @capgo/capacitor-social-login 为 @capgo/capacitor-social-login 原生能力提供实现细节 @capgo/capacitor-social-login 为 @capgo/capacitor-social-login 的实现细节提供 @capgo/capacitor-passkey 为 @capgo/capacitor-passkey 的实现细节提供 @capgo/capacitor-native-biometric 为 @capgo/capacitor-native-biometric 的实现细节提供,以及 双因素身份验证 为双因素身份验证提供实现细节.