Supabase Google iOS 登录
复制一个包含安装步骤和本插件的完整 Markdown 指南的配置提示。
本指南将帮助您在 iOS 上将 Google Sign-In 与 Supabase 身份验证集成。假设您已经完成:
- Google 登录 iOS 设置 Supabase Google 登录 - 通用设置
- the the.
实现
实现完整的实现可以在 示例应用的 supabaseAuthUtils.ts 文件中找到。这个指南解释了关键概念和如何使用它。
使用身份验证助手
身份验证助手函数处理整个身份验证流程: authenticateWithGoogleSupabase 复制到剪贴板
import { authenticateWithGoogleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithGoogleSupabase();if (result.success) { console.log('Signed in:', result.user); // Navigate to your authenticated area} else { console.error('Error:', result.error);}如何工作
__CAPGO_KEEP_0__了解详细的验证流程,包括 nonce 生成、 JWT 验证和 Supabase 登录,请参见《通用设置指南》中的“如何工作”部分 通用设置指南中的“如何工作”部分.
重要注意事项
标题为“重要注意事项”的部分iOS token 缓存和 nonce 问题
标题为“iOS token 缓存和 nonce 问题”的部分iOS nonce 缓存问题
在 iOS 上,Google 登录可以缓存令牌,这可能会导致 nonce 验证失败。该 validateJWTToken 功能检测到这一点并自动处理它:
- 自动检测:功能检查令牌中的 nonce 是否与预期的
nonceDigest - 自动重试:: 如果验证失败,它会自动从 Google 登出并重试一次
- 错误处理: 如果重试也失败,会返回错误
为什么会这样: iOS Google Sign-In SDK 缓存令牌以提高性能。当缓存的令牌返回时,它可能使用了不同的 nonce(或无 nonce),导致不匹配。
解决方案: 实现自动处理此问题,通过登出并重试,迫使 Google 生成一个带有正确 nonce 的新令牌。
手动工作绕过 (如果自动重试不起作用):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();这确保了使用正确 nonce 的令牌被获得。
完整的code参考,请参见 完成 Code 参考部分在通用设置指南.
重要注意事项
标题为“重要注意事项”的部分随机数处理
标题为“随机数处理”的部分随机数实现遵循了从 React Native Google Sign In 文档:
rawNonce转到 Supabase 的signInWithIdToken()- Supabase 生成了一个
rawNonce并与nonceDigest从 Google Sign-In 中的 nonceDigest(SHA-256 哈希,16 进制编码) 转到 ID 令牌nonceGoogle Sign-In API 的参数
自动重试机制
自动重试机制这个 authenticateWithGoogleSupabase 函数包含一个参数: retry 第一次调用(
- ):如果验证失败,自动注销并重试一次
retry=false重试调用( - ):如果验证失败,再次重试后立即返回错误
retry=true这可以自动解决 iOS token 缓存问题。
故障排除
parameter in Google Sign-In APIs
Troubleshooting如果认证失败:
- Nonce 不匹配: 自动重试函数 - 检查控制台日志以获取详细信息。如果持续存在,请先手动注销
- 无效的受众: 确保在 Google Cloud Console 和 Supabase 中的 Google Client IDs 匹配(包括 iOS 和 Web 客户端 ID)
- 令牌验证失败: 确保在初始化调用中使用
mode: 'online'在 initialize 调用中使用 idToken - Info.plist 配置: 确保 Info.plist 有正确的 URL 方案和 GIDClientID
- Review the 示例应用程序 code 参考
从 Supabase Google Login on iOS 开始
标题:从 Supabase Google Login on iOS 开始如果您正在使用 Supabase Google Login on iOS 来规划身份验证和帐户流程,连接它 使用 @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 的实现细节, 双因素认证 对于双因素认证的实现细节。