Supabase Google Login on iOS
このプラグインのインストール手順とフルマークダウンガイドを含むセットアッププロンプトをコピーしてください。
このガイドでは、iOSでGoogle Sign-InとSupabase Authenticationを統合する方法を説明します。Google Sign-InとSupabase Authenticationを統合するには、以下のステップを実行する必要があります。
Implementation
Section titled “Implementation”完全な実装は、 example appの supabaseAuthUtils.ts ファイルにあります。このガイドでは、主な概念とその使用方法を説明します。
Using the Authentication Helper
「認証ヘルパーを使用する」セクションのタイトルその 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 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 ドキュメント:
rawNonceは Supabase へsignInWithIdToken()- Supabase は
rawNonceをハッシュ化します。nonceDigestをハッシュ化したものと nonceDigestが Google Sign-In から取得される ID トークンに含まれるnonce(SHA-256 ハッシュ、16 進数エンコード)を Supabase へ
パラメータとして Google Sign-In API へ
自動リトライメカニズム「自動リトライメカニズム」 authenticateWithGoogleSupabase この retry 関数には、
- 初回呼び出し (
retry=false): 認証失敗の場合、自動的にログアウトし、再試行する - 再試行呼び出し (
retry=true): 認証失敗が再発生した場合、直ちにエラーを返す
iOS のトークンキャッシュ問題を自動的に解決する
トラブルシューティング
「トラブルシューティング」セクション認証が失敗した場合:
- 非同期トークン一致: 関数は自動的に再試行する - 詳細はコンソールログを確認してください。再発生した場合は、手動でログアウトしてください
- 無効な受信者: Google クライアント ID が Google クラウド コンソールと Supabase (iOS と Web クライアント ID) で両方に一致することを確認してください
- トークン検証が失敗しました: 正しく設定されていることを確認してください
mode: 'online'initialize呼び出しで idToken を取得するために使用する - Info.plist の設定: Info.plist に正しい URL スキームと GIDClientID が含まれていることを確認してください
- 例のアプリ example app code Capgo の例アプリ
Supabase Google Login on iOS から続けてください
「Supabase Google Login on iOS から続けてください」Capgo を使用している場合 iOS で Supabase Google Login を使用している場合 認証とアカウントフローの計画に役立つため、Cloudflare、Capacitor、GitHub、Capgo、API、SDK、CLI、npm、bun などとは異なる方法で接続します。 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要素認証 2要素認証