Supabase Google 登录 iOS
复制一个包含安装步骤和本插件完整 Markdown 指南的设置提示。
本指南将帮助您在 iOS 上将 Google Sign-In 与 Supabase 身份验证集成。假设您已经完成了以下步骤:
完整的实现可在示例应用程序的 文件中找到。该指南将解释关键概念和如何使用它。 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);}如何工作 有关身份验证流程的详细说明,包括 nonce 生成、 JWT 验证和 Supabase 登录,请参见 .
如何工作部分在通用设置指南
重要注意事项区域/页面:重要注意事项
iOS令牌缓存和 nonce 问题iOS Nonce Caching Issue
在 iOS 上,Google Sign-In 可以缓存令牌,这可能会导致 nonce 验证失败。 The validateJWTToken 功能检测到这一点并自动处理它:
- 自动检测: 功能检查令牌中的 nonce 是否与预期的
nonceDigest - 自动重试: 如果验证失败,它会自动从 Google 登出并尝试一次
- 错误处理: 如果重试也失败,则会返回错误
为什么会这样: iOS Google Sign-In SDK 缓存令牌以提高性能。当返回的缓存令牌可能已使用不同的 nonce (或无 nonce) 生成,导致不匹配。
解决方案: Google 将自动处理此问题,通过注销并重试,强制 Google 生成一个带有正确 nonce 的新令牌。
手动解决方案 (如果自动重试不起作用):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();这确保了获得带有正确 nonce 的新令牌。
有关完整的 code 参考,请参见《通用设置指南》中的 完整 Code 参考.
重要注意事项
标题为“重要注意事项”的部分nonce 处理
标题为“nonce 处理”的部分nonce 实现遵循了来自 React Native Google Sign In 文档:
rawNonce跳转到 Supabase 的signInWithIdToken()- Supabase 生成一个哈希值
rawNonce并将其与 ID token 中的nonceDigest(SHA-256 哈希值,16 进制编码)跳转到 nonceDigest参数在 Google Sign-In API 中nonce自动重试机制
标题:自动重试机制
The函数包含一个 authenticateWithGoogleSupabase 参数: retry __CAPGO_KEEP_0__
- 首次调用(
retry=false如果验证失败,自动注销并重试一次 - 重试调用(
retry=true如果验证失败,立即返回错误
这自动解决了iOS令牌缓存问题
故障排除
故障排除如果身份验证失败:
- 令牌不匹配: 函数自动重试 - 检查控制台日志以获取详细信息。如果持续存在,请手动注销
- 无效受众: 确认您的Google Client ID在Google Cloud Console和Supabase(包括iOS和Web客户端ID)中都匹配
- Token 验证失败: 确保您正在使用
mode: 'online'在初始化调用中使用 - Info.plist 配置: 确保 Info.plist 有正确的 URL 方案和 GIDClientID
- 查看 示例应用程序 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的实现细节,并 双因素身份验证 为双因素身份验证的实现细节。