跳过内容

Supabase Google 登录

GitHub

本指南将帮助您在 iOS 上将 Google Sign-In 与 Supabase 身份验证集成。假设您已经完成了以下内容:

完整的实现可在 example app’s supabaseAuthUtils.ts 文件中找到。该指南将解释关键概念和如何使用它。

Using the Authentication Helper

使用认证助手的部分标题

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 功能检测到这一点并自动处理它:

  1. 自动检测: 功能检查令牌中的 nonce 是否与预期的 nonceDigest
  2. 自动重试: 如果验证失败,它会自动从 Google 登出并重试一次
  3. 错误处理: 如果重试也失败,则会返回错误

为什么会这样: iOS Google Sign-In SDK 缓存令牌以提高性能。当返回的缓存令牌被生成时,它可能会有不同的 nonce(或无 nonce),导致不匹配。

解决方案: Google 实现自动处理此问题,通过注销并重试,迫使 Google 生成一个带有正确 nonce 的新令牌。

手动解决方案 (如果自动重试不起作用):

// Logout first to clear cached tokens
await SocialLogin.logout({ provider: 'google' });
// Then authenticate
const result = await authenticateWithGoogleSupabase();

这确保了获得带有正确 nonce 的新令牌。

有关完整的code参考,请参见《通用设置指南》中的 完整Code参考.

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令牌缓存问题。

标题为“故障排除”

  • 如果身份验证失败:令牌不匹配
  • :函数自动重试-检查控制台日志以获取详细信息。如果持续存在,请手动注销无效受众:
  • 令牌验证失败: 确保您正在使用 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的实现细节,并且 双因素身份验证 为双因素身份验证的实现细节。