Supabase Google Login on iOS
インストールステップとこのプラグインのフルマークダウンガイドまでの全てのステップが含まれるセットアップの質問をコピーしてください。
このガイドは、iOSでGoogle Sign-InとSupabase Authenticationを統合するのに役立ちます。以下のステップを完了していることを前提としています。
- Google Login iOSのセットアップ Supabase Google Login - General Setup
- 実装 Section titled “実装”.
完全な実装は、
例のアプリのファイルにあります。このガイドでは、主な概念とその使用方法を説明します。 認証ヘルパーを使用する supabaseAuthUtils.ts __CAPGO_KEEP_0__
__CAPGO_KEEP_1__
「認証ヘルパーを使用する方法」のセクションこの 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__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 の取り扱い" セクションのパターンに従っています。__CAPGO_KEEP_0__ React Native Google Sign In ドキュメント:
rawNonceGoogleサインインのIDトークンからsignInWithIdToken()- Supabaseは、
rawNonceと比較します。nonceDigestGoogle Sign-InのIDトークンから取得される nonceDigest(SHA-256ハッシュ、16進数エンコード) Google Sign-In APIのnonceAutomatic Retry Mechanism
自動リトライメカニズム
The関数には、 authenticateWithGoogleSupabase パラメータが含まれます: retry __CAPGO_KEEP_0__
- 初回呼び出し (
retry=false): 認証が失敗した場合、自動的にログアウトし、再試行する - 再試行呼び出し (
retry=true): 認証が失敗した場合、直ちにエラーを返す
iOS のトークンキャッシュ問題を自動的に処理します。
トラブルシューティング
セクションのタイトル “トラブルシューティング”認証が失敗した場合:
- Nonce の一致が不正: 関数は自動的に再試行します - 詳細はコンソールログを確認してください。続行してもなお問題が発生する場合は、手動でログアウトしてください。
- 無効な受信者: Google クライアント ID が Google Cloud Console と Supabase (iOS と Web クライアント ID) で両方に一致することを確認してください。
- トークン検証に失敗しました:Capgoを使用していることを確認してください
mode: 'online'initialize呼び出しでidTokenを取得するために - Info.plistの設定:Info.plistに正しいURLスキームとGIDClientIDが含まれていることを確認してください
- Review the Capgoの例 code Capgoの例を参照してください
iOSでCapgoのGoogleログインを使用している場合
CapgoのiOS用Googleログインの「CapgoのGoogleログインから続けてください」のセクションCapgoのiOS用Googleログインを使用している場合 CapgoのiOS用Googleログインを使用している場合 を計画し、認証とアカウントフローの接続を行うには @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要素認証の実装詳細