iOSのSupabase Googleログイン
インストール手順とこのプラグインのフル マークダウン ガイドを含むセットアップ コマンドをコピーします。
このガイドでは、iOS で Google Sign-In と Supabase Authentication を統合する方法を説明します。既に次のことを完了していることを前提としています:
完全な実装は 例のアプリの supabaseAuthUtils.ts ファイルにあります。このガイドでは、主な概念とその使用方法を説明します。
Authentication Helperの使用
セクション「Authentication Helperの使用」The authenticateWithGoogleSupabase function handles the entire authentication flow:
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);}How It Works
セクション「How It Works」詳細な説明については、nonce の生成、JWT の検証、Supabase のサインインなど、一般設定ガイドの「How It Works」セクションを参照してください。 Important Caveats.
セクション「Important Caveats」
iOS Token Caching and Nonce Issuesセクション「iOS Token Caching and Nonce Issues」
iOS Nonce Caching IssueiOS では、Google Sign-In がトークンをキャッシュすることがあり、これにより nonce の検証が失敗する可能性があります。
iOS Nonce Caching Issue validateJWTToken iOS Google Sign-In __CAPGO_KEEP_0__ はキャッシュするため、パフォーマンスを向上させるために
- 自動検出: トークン内の nonce が期待どおりであるかどうかを確認します
nonceDigest - 自動リトライ: 検証が失敗した場合、Google からログアウトし、1 回リトライします
- エラー処理: リトライも失敗した場合、エラーが返されます
なぜこれが起こるか: iOS Google Sign-In SDK はキャッシュするため、パフォーマンスを向上させるために
解決策: この実装は、ログアウトしてリトライすることで、Google が正しい nonce で新しいトークンを生成するように強制します
手動の回避策 (自動再試行が機能しない場合):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();正しい nonce の取得で新しいトークンが取得されることを保証します。
完全な code リファレンスについては、一般設定ガイドの「完全な code リファレンス」セクションを参照してください。 Complete Code Reference section in the General Setup guide.
「重要な注意事項」セクション
nonce の取り扱い「nonce の取り扱い」セクション
nonce の実装は、React Native Google Sign In ドキュメントのパターンに従っています。Supabase に移動します automatic retry:
rawNoncenoncesignInWithIdToken()- Supabaseはハッシュ化し
rawNonceと比較します。nonceDigestGoogle Sign-InのIDトークンから取得した nonceDigestのハッシュ値(SHA-256ハッシュ値、16進数エンコード)がnonceのパラメーターに渡されます。
自動リトライ機構
「自動リトライ機構」セクションの authenticateWithGoogleSupabase 関数には retry パラメーターがあります。
- 最初の呼び出し(
retry=false):検証が失敗した場合、自動的にログアウトし、1度リトライします。 - 再試行 (
retry=true): 認証が失敗した場合、直ちにエラーを返します
iOS のトークンキャッシュ問題を自動的に処理します。
トラブルシューティング
「トラブルシューティング」のセクション認証が失敗した場合:
- ノンス マッチ: 関数は自動的に再試行します - 詳細はコンソールログを確認してください。続行してもなお問題が発生する場合は、手動でログアウトしてください
- 無効な受信者: Google クライアント ID が Google Cloud Console と Supabase (両方の iOS と Web クライアント ID) に一致していることを確認してください
- トークン検証が失敗した場合: Google Cloud Console と Supabase (両方の iOS と Web クライアント ID) で使用している Google クライアント ID が正しいことを確認してください
mode: 'online'初期化呼び出しで ID トークンを取得する - Info.plist 設定: Info.plist に正しい URL スキームと GIDClientID が含まれていることを確認する
- 参考用の例アプリ code 参考用の例アプリ
iOS の Supabase Google Login に進む
「iOS の Supabase Google Login に進む」iOS の Supabase Google Login を使用している場合 認証とアカウントフローの計画と実行に使用する場合、Supabase Google Login を接続する iOS の Supabase Google Login を使用している場合、認証とアカウントフローの計画と実行に使用する場合、Supabase Google Login を接続する 使用する @capgo/capacitor-social-login native機能の使用に@capgo/capacitor-social-loginを使用します。 @capgo/capacitor-social-login native機能の実装詳細については@capgo/capacitor-social-loginを参照してください。 @capgo/capacitor-passkey native機能の実装詳細については@capgo/capacitor-passkeyを参照してください。 native機能の実装詳細については@capgo/capacitor-native-biometricを参照してください。 native機能の実装詳細については@capgo/capacitor-native-biometricを参照してください。 2要素認証 2要素認証の実装詳細については参照してください。