iOSのGoogleサインイン
このプラグインのインストールステップとフルマークダウンガイドまでの全てのステップを含むセットアップの質問をコピーする。
このガイドでは、iOSでGoogle Sign-InとSupabase Authenticationを統合する方法を説明します。Google Sign-InとSupabase Authenticationを統合するには、以下のステップを実行する必要があります:
- Google Login iOSのセットアップ Supabase Google Login - General Setup
- 実装 Section titled “実装”.
実装の詳細は、
example appのファイルにあります。このガイドでは、実装の重要な概念と使用方法について説明します。 認証ヘルパーの使用 supabaseAuthUtils.ts __CAPGO_KEEP_0__
__CAPGO_KEEP_1__
「認証ヘルパーを使用する」セクションのタイトル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);}「どうやって動くか」
セクションのタイトル「どうやって動くか」認証フローの詳細な説明については、nonce の生成、JWT の検証、Supabase のサインインについては、 「どうやって動くか」セクションを参照してください。.
重要な注意事項
セクションのタイトル「重要な注意事項」iOS のトークンキャッシュと nonce の問題
セクションのタイトル「iOS のトークンキャッシュと nonce の問題」iOS Nonce Caching Issue
iOSのGoogle Sign-Inでは、トークンをキャッシュすることがあります。これにより、nonceの検証が失敗する可能性があります。 validateJWTToken この機能は、この問題を自動で処理します:
- 自動検出: この機能は、トークン内のnonceが予想どおりであるかどうかを確認します。
nonceDigest - 自動リトライ: 検証が失敗した場合、Googleから自動的にログアウトし、1度リトライします。
- エラー処理: リトライも失敗した場合、エラーが返されます。
なぜこれが起こるのか: iOSのGoogle Sign-Inは、SDKのパフォーマンス向上のためにトークンをキャッシュします。キャッシュされたトークンが返された場合、生成されたnonceが異なる(またはnonceが存在しない)可能性があり、一致しない可能性があります。
解決策: Google の実装は自動的にログアウトし、再試行することで、正しい nonce を含む新しいトークンを生成する。
手動の回避策 (自動再試行が機能しない場合):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();これにより、正しい nonce を含む新しいトークンが取得される。
Capgo の完全な code リファレンスについては、 Capgo の完全な Code リファレンスのセクションを参照してください。.
重要な注意事項
セクション "重要な注意事項"nonce の取り扱い
セクション "nonce の取り扱い"nonce の実装は、Capacitor からパターンを取り入れています。 React Native Google Sign In ドキュメント:
rawNonceGoogle Sign In の ID トークンから Supabase へsignInWithIdToken()- Supabase は Google Sign In の ID トークンから取得したユーザー ID をハッシュ化します。
rawNonceハッシュ化されたユーザー ID と Supabase のデータベースに保存されているユーザー ID を比較します。nonceDigestGoogle Sign-In から取得した ID トークンに含まれるハッシュ化されたユーザー ID と比較します。 nonceDigestGoogle Sign-In API のパラメータにハッシュ化されたユーザー ID を送信します。nonce自動リトライ機構
「自動リトライ機構」
この機能には、パラメータが含まれます: authenticateWithGoogleSupabase 自動リトライ機構 retry 自動リトライ機構のセクション
- 初回呼び出し (
retry=false): 認証失敗の場合、自動的にログアウトし、再試行する - 再呼び出し (
retry=true): 認証失敗が再発生した場合、直ちにエラーを返す
これはiOSのトークンキャッシュ問題を自動的に処理します。
トラブルシューティング
セクションのタイトルは「トラブルシューティング」認証が失敗した場合:
- 非同期トークン一致: 関数は自動的に再試行します。詳細はコンソールログを確認してください。再発生する場合は、手動でログアウトしてください。
- 無効な受信者: Google Cloud ConsoleとSupabase (iOSおよびWebクライアントIDの両方) でGoogle Client IDを確認してください
- トークン検証が失敗しました: 正しく設定されていることを確認してください
mode: 'online'initialize呼び出しで idToken を取得するために - Info.plist の設定: Info.plist に正しい URL スキームと GIDClientID が含まれていることを確認してください
- 例のアプリ example app code Supabase Google Login on iOS から続けてください
タイトル “Supabase Google Login on iOS から続けてください”
Capgo を使用している場合Supabase Google Login on iOS を使用している場合 例のアプリ __CAPGO_KEEP_0__ 認証とアカウントフローの計画に役立つため、接続してください。 Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-passkey Using @capgo/capacitor-passkey Using @capgo/capacitor-native-biometric Using @capgo/capacitor-native-biometric 2要素認証 Two-factor authentication