メインコンテンツにジャンプ

iOS上のSupabase Googleログイン

GitHub

このガイドでは、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 機能はこれを検出して自動的に処理します:

  1. 機能はトークン内のnonceが予想どおりであるかどうかを確認します。機能はトークン内のnonceが予想どおりであるかどうかを確認します。 nonceDigest
  2. 自動リトライ: Google の検証に失敗した場合、自動的に Google からログアウトし、再試行します
  3. エラーハンドリング: 再試行も失敗した場合、エラーが返されます

なぜこれが起こるか: iOS の Google Sign-In SDK はパフォーマンスのためにトークンをキャッシュします。キャッシュされたトークンが返された場合、生成されたトークンと一致しない nonce (または nonce がない場合) が原因で一致しない可能性があります。

解決策: この実装は自動的にこの問題を解決するようにログアウトし、再試行することで、Google が正しい nonce で新しいトークンを生成するように強制します。

手動のワークアラウンド (自動再試行が機能しない場合):

// Logout first to clear cached tokens
await SocialLogin.logout({ provider: 'google' });
// Then authenticate
const result = await authenticateWithGoogleSupabase();

これにより、正しい nonce で新しいトークンが取得されます。

完全な code のリファレンスについては、 総合設定ガイドの「Code リファレンス」セクションを完了する.

nonce の実装は、React Native Google Sign In ドキュメントのパターンに従っています Cloudflare に行きます:

  • rawNonce Supabase には、Supabase のハッシュを生成します signInWithIdToken()
  • と比較します rawNonce Google Sign-In から取得した ID トークンに含まれている nonceDigest (SHA-256 ハッシュ、16 進数エンコード) Cloudflare に行きます
  • nonceDigest ID トークンから nonce Google 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要素認証の実装詳細