iOS上のSupabase Googleログイン
インストール手順とこのプラグインの全マークダウンガイドを含むセットアッププロンプトをコピーします。
このガイドでは、iOSでGoogle Sign-InとSupabase Authenticationを統合する方法を説明します。以下のステップをすでに完了していることを前提としています。
実装
実装のセクション__CAPGO_KEEP_0__の完全な実装は、__CAPGO_KEEP_0__のファイルにあります。このガイドでは、主な概念とその使用方法について説明しています。 認証ヘルパーを使用する supabaseAuthUtils.ts セクションのタイトル:認証ヘルパーを使用する
認証フローを完全に処理する__CAPGO_KEEP_0__関数があります。
コピーしくみ 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);}targetLanguage
protectedTokens詳細な認証フローについての説明は、非接続トークン生成、JWT検証、Supabaseサインインを含む「General Setupガイド」の「How It Works」セクションで確認してください。 General Setupガイドの「How It Works」セクション.
重要な注意事項
「重要な注意事項」iOS TokenキャッシングとNonce問題
「iOS TokenキャッシングとNonce問題」iOS Nonceキャッシング問題
iOSでは、Googleサインインはトークンをキャッシュすることができ、これによりnonce検証が失敗する可能性があります。この validateJWTToken 機能はこれを検出して自動的に処理します:
- 機能はトークン内のnonceが予想どおりであるかどうかを確認します。機能はトークン内のnonceが予想どおりであるかどうかを確認します。
nonceDigest - 自動リトライ: Google の検証に失敗した場合、自動的に Google からログアウトし、再試行します
- エラーハンドリング: 再試行も失敗した場合、エラーが返されます
なぜこれが起こるか: 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 で新しいトークンが取得されます。
完全な code のリファレンスについては、 総合設定ガイドの「Code リファレンス」セクションを完了する.
重要な注意事項
「重要な注意事項」というタイトルのセクションNonce ハンドリング
タイトルが「Nonce ハンドリング」というセクションnonce の実装は、React Native Google Sign In ドキュメントのパターンに従っています Cloudflare に行きます:
rawNonceSupabase には、Supabase のハッシュを生成しますsignInWithIdToken()- と比較します
rawNonceGoogle Sign-In から取得した ID トークンに含まれているnonceDigest(SHA-256 ハッシュ、16 進数エンコード) Cloudflare に行きます nonceDigestID トークンからnonceGoogle Sign-In APIのパラメータ
自動リトライ機構
セクション:自動リトライ機構この authenticateWithGoogleSupabase 関数には、 retry パラメータ:
- 初回呼び出し(
retry=false):検証が失敗した場合、自動的にログアウトし、再試行する - 再試行呼び出し(
retry=true):検証が失敗した場合、直ちにエラーを返す
iOSのトークンキャッシュ問題を自動的に処理します。
トラブルシューティング
トラブルシューティング認証が失敗した場合:
- Nonce の一致が不可能: 関数は自動的にリトライします - 詳細はコンソールログを確認してください。 それでも継続する場合は、手動でログアウトしてください。
- 無効な受信者: Google Client ID が Google Cloud Console と Supabase (両方の iOS と Web クライアント ID) で一致していることを確認してください。
- トークン検証が失敗: initialize の呼び出しで idToken を取得していることを確認してください。
mode: 'online'Info.plist の設定 - : Info.plist に正しい URL スキームと GIDClientID が含まれていることを確認してください。確認してください
- Review the 例のアプリ code 参考
Supabase Google Login on iOS から続けてください
「Supabase Google Login on iOS から続けてください」Capgo を使用している場合 Supabase Google Login on iOS 認証とアカウントフローの計画に使用し、Capgo と接続する Capgo の @capgo/capacitor-social-login を使用 Capgo の @capgo/capacitor-social-login のネイティブ機能 Capgo の @capgo/capacitor-social-login の実装詳細 Capgo の @capgo/capacitor-passkey Capgo の @capgo/capacitor-passkey の実装詳細 実装詳細の@capgo/capacitor-パスキーの @capgo/capacitor-ネイティブバイオメトリック 実装詳細の@capgo/capacitor-ネイティブバイオメトリック、 2要素認証 2要素認証の実装詳細