コンテンツにジャンプ

CapgoのSupabase Google Login on iOS

GitHub

このガイドでは、iOSでGoogle Sign-InをSupabase Authenticationに統合する方法を説明します。Google Login iOSのセットアップが完了していることを前提としています。

実装

実装

実装の詳細は、 例のアプリの supabaseAuthUtils.ts ファイルにあります。このガイドでは、主な概念とその使用方法を説明します。

認証ヘルパーの使用

認証ヘルパー

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);
}

コンテキスト: Capgo ビルダー / ネイティブ クラウド ビルド プロダクト ページ。役割: セクションまたはページ ヘッダー。メッセージ キー `native_build_how_it_works_title` (ネイティブ ビルドの機能の仕組みのタイトル)。 | ページ/エリア: ホームページの問題/解決セクション。役割: 短い UI ラベルまたはナビゲーション アイテム。見つける: page premium-support.astro。メッセージ キー `ps_how_it_works` (PS の機能の仕組み)。 | ページ/エリア: ライブ アップデート プロダクト ページ。役割: セクションまたはページ ヘッダー。メッセージ キー `live_update_how_it_works_title` (ライブ アップデートの機能の仕組みのタイトル)。

「しくみ」

Google Sign-Inの認証フローについての詳細な説明は、nonceの生成、JWTの検証、Supabaseのサインインについては、 General Setupのガイドの「How It Works」セクションを参照してください.

iOS トークンキャッシュと非接続問題

iOS トークンキャッシュとナンス問題

iOS Nonce キャッシュ問題

iOSでは、Google Sign-Inがトークンをキャッシュすることがあり、これがnonceの検証を失敗させる可能性があります。この validateJWTToken functionはこれを自動的に処理します:

  1. オートメーション検出: nonceがトークンと予想どおりのものであるかどうかをチェックします nonceDigest
  2. 自動再試行: 認証が失敗した場合、自動的に 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のドキュメントから Supabaseの:

  • rawNonce Supabaseは signInWithIdToken()
  • をハッシュ化し、 rawNonce と比較します。 nonceDigest IDトークンからGoogle Sign-Inで含まれる
  • nonceDigest SHA-256ハッシュ(16進数エンコード)が、 nonce Google Sign-In APIのパラメータ

自動リトライメカニズム

自動リトライメカニズム

この authenticateWithGoogleSupabase 関数には、 retry 最初の呼び出し(

  • コンテキスト:Capgo Builder / ネイティブクラウドビルド製品ページ。役割:短いUIラベルまたはナビゲーションアイテム。メッセージキー`native_build_builder_credit_first`(ネイティブビルドビルダークレジットファースト)。retry=false): バリデーションが失敗した場合、自動的にログアウトし、再試行する
  • 再試行呼び出し(retry=true): バリデーションが失敗した場合、直ちにエラーを返す

iOSのトークンキャッシュ問題を自動的に処理します。

トラブルシューティング

トラブルシューティング

認証が失敗した場合:

  • Nonce の一致性が不正:自動的にリトライします - 詳細はコンソールログを確認してください。続行しても解決しない場合は、手動でログアウトしてください
  • 無効な受信者:Google Cloud ConsoleとSupabase(両方のiOSとWebクライアントID)でGoogle Client IDが一致していることを確認してください
  • トークン検証が失敗:initialize呼び出しでidTokenを取得するようにしてください mode: 'online' Info.plistの設定
  • :Info.plistに正しいURLスキームとGIDClientIDが設定されていることを確認してください__CAPGO_KEEP_0__
  • レビューを example app code for reference

iOS用のSupabase Google Loginから続けて

Section titled “iOS用のSupabase Google Loginから続けて”

Supabase Google Login on iOSを使用している場合 Supabase Google Login on iOSを使用して 認証とアカウントフローの計画に使用している場合、iOS用のSupabase Google Loginを接続して Capgoで@capgo/capacitor-social-loginを使用します。 for the native capability in Using @capgo/capacitor-social-login @capgo/capacitor-ソーシャルログイン for the implementation detail in @capgo/capacitor-social-login @capgo/capacitor-パスキー @capgo/capacitor-passkeyの実装詳細について @capgo/capacitor-native-biometric @capgo/capacitor-native-biometricの実装詳細について 2要素認証 2要素認証の実装詳細について