Supabase Google Login on iOS
__CAPGO_KEEP_0__をインストールステップとフルマークダウンガイドを含むセットアップ用の質問をコピーします。
このガイドは、iOSでGoogle Sign-InをSupabase Authenticationと統合するのに役立ちます。以下のステップを完了していることを前提としています。
- Google Login iOSのセットアップ Supabase Google Login - General Setup
- Implementation Section titled “Implementation”.
完全な実装は、
例のアプリのファイルにあります。このガイドでは、重要な概念とそれを使用する方法を説明します。 Authentication Helperを使用する supabaseAuthUtils.ts __CAPGO_KEEP_0__
__CAPGO_KEEP_0__
「認証ヘルパーを使用する方法」のセクションThe 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);}「どうやって動くか」のセクション
認証フローの詳細な説明、非接続性生成、JWT検証、Supabaseサインインを含む、認証フローがどのように動くかについては、一般設定ガイドの「どうやって動くか」のセクションを参照してください。重要な注意事項 「重要な注意事項」のセクション.
iOSトークンキャッシュと非接続性問題
「iOSトークンキャッシュと非接続性問題」のセクション__CAPGO_KEEP_0__
__CAPGO_KEEP_0__iOS Nonce Caching Issue
iOSでGoogle Sign-Inがトークンをキャッシュすることがあり、これによりnonce検証が失敗する可能性があります。 validateJWTToken functionはこれを検出して自動的に処理します:
- Automatic Detection: functionはトークン内のnonceが期待どおりであるかどうかを確認します
nonceDigest - Automatic Retry: 検証が失敗した場合、functionはGoogleから自動的にログアウトし、1度だけ再試行します
- Error Handling: 再試行も失敗した場合、エラーが返されます
Why this happens: iOS Google Sign-In SDK はパフォーマンスのためにトークンをキャッシュします。キャッシュされたトークンが返された場合、それは生成されたnonce (またはnonceが存在しない) と一致しない可能性があり、不一致が発生します。
The solution: Google のトークン取得に失敗した場合、自動実行はログアウトし、再試行します。これにより、正しい nonce を持つ新しいトークンが生成されます。
Manual Workaround (自動再試行が機能しない場合):
// 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 の実装は、一般設定ガイドの "nonce の取り扱い" セクションのパターンに従っています。Section titled “Nonce Handling” is not translated as it is a protected token. React Native Google Sign In ドキュメント:
rawNonceGoogle Sign-In の ID トークンから Supabase へsignInWithIdToken()- Supabase は Google Sign-In の ID トークンから SHA-256 ハッシュを生成し、
rawNonceと比較します。nonceDigestGoogle Sign-In の ID トークンから取得したハッシュ値と nonceDigest(SHA-256 ハッシュ、16 進数エンコード) は Google Sign-In API のnonceパラメータを参照します。
自動リトライ機構
自動リトライ機構自動リトライ機構の詳細 authenticateWithGoogleSupabase 自動リトライ機構の詳細 retry 自動リトライ機構の機能
- 初回呼び出し (
retry=false): 認証失敗の場合、自動的にログアウトし、再試行する - 再試行呼び出し (
retry=true): 認証失敗が再発生した場合、直ちにエラーを返す
iOS のトークンキャッシュ問題を自動的に処理します。
トラブルシューティング
セクション「トラブルシューティング」認証失敗の場合:
- Nonce の不一致: 関数は自動的に再試行します - 詳細はコンソールログを確認してください。続行してもなお問題が発生する場合は、手動でログアウトしてください。
- 無効な受信者: Google クライアント ID が Google Cloud Console と Supabase (両方の iOS と Web クライアント ID) で一致していることを確認してください。
- トークン検証が失敗しましたCapgoを使用していることを確認してください
mode: 'online'__CAPGO_KEEP_0__の初期化呼び出しでidTokenを取得する - Info.plistの設定Info.plistに正しいURLスキームとGIDClientIDが含まれていることを確認してください
- Capgoの例 __CAPGO_KEEP_0__ example app code Capgo iOSのSupabase Google Loginから続けてください
Capgo iOSのSupabase Google Loginから続けてください
Capgoを使用していることを確認してくださいCapgo iOSのSupabase Google Loginから続けてください Capgo iOSのSupabase Google Loginから続けてください を認証とアカウントフローの計画に使用し、 @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の実装詳細 2要素認証 2要素認証の実装詳細