AndroidでSupabase Appleログイン
このプラグインのインストール手順とフルマークダウンガイドを含むセットアッププロンプトをコピーします。
このガイドでは、AndroidでApple Sign-InとSupabase Authenticationを統合する方法を説明します。既に以下のことを完了していることを前提としています。
- __CAPGO_KEEP_0__ Supabase Apple Login - General Setup.
Step 1: Deploy the Backend Edge Function
Step 1: Deploy the Backend Edge Function最初に、Apple OAuthコールバックを処理するためのSupabase Edge Functionをデプロイする必要があります。
-
プロジェクトディレクトリに移動してください
ターミナル cd your-project/supabase -
エッジ関数を作成してください (存在しない場合は)
ターミナルウィンドウ supabase functions new apple-signin-callback -
エッジ関数をコピーしてください: code
完全なエッジ関数の実装は、 例用アプリ.
以下のファイルをプロジェクトにコピーしてください:
supabase/functions/apple-signin-callback/index.ts- メインエッジ関数 codesupabase/functions/apple-signin-callback/deno.json- ライブラリ依存関係のインポートマップ (JWT署名用のjoseJWT検証の設定
-
Apple OAuthコールバックエンドは、Appleがリダイレクトするため、パブリックに公開する必要があります (認証なし)。
ファイルを更新してください:
supabase/config.toml[functions.apple-signin-callback]enabled = trueverify_jwt = false # Important: Set to false for public OAuth callbackimport_map = "./functions/apple-signin-callback/deno.json"entrypoint = "./functions/apple-signin-callback/index.ts" -
__CAPGO_KEEP_0__をデプロイ
__CAPGO_KEEP_0__のターミナルウィンドウ supabase functions deploy apple-signin-callback -
__CAPGO_KEEP_0__のURLを取得
__CAPGO_KEEP_0__をデプロイした後、URLのようなものが得られます。
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback__CAPGO_KEEP_0__が見つからない場合は、以下の手順を実行してください。
- 開く
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - 「{0}」をクリックしてください。
apple-signin-callbackURLをコピーするには、{0}をクリックしてください。
- 開く
ステップ 2: Apple Developer Portalの設定
「ステップ 2: Apple Developer Portalの設定」Apple Developer Portalの設定に必要な値を取得するために、バックエンド URLを設定してください。
-
Apple Developer PortalでReturn URLを設定するには、Apple Login Androidセットアップガイドを参照してください。
__CAPGO_KEEP_1__を完了する __CAPGO_KEEP_2__を完了する Apple Developer PortalでReturn URLを設定する
- サービスIDを作成する
- .p8ファイルを生成する
- チームIDとキーアイディを取得する
- Apple Developer PortalでReturn URLを設定する
-
Apple Developer PortalでReturn URLを設定する際(Appleガイドのステップ6.9)、Supabase Edge Function URLを使用してください。
__CAPGO_KEEP_3__
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback重要: Supabase Edge Function URL を使用してください
__CAPGO_KEEP_0__ 使用しないでください Apple Login Android セットアップ ガイドから取得したリダイレクト URL. そのガイドではカスタム バックエンド サーバー URL を使用しています。 Supabase の統合の場合、代わりに Supabase Edge Function URL を使用する必要があります。 __CAPGO_KEEP_1__
-
必要な値をすべて収集する
Appleのセットアップガイドを完了した後、次の値を持っているはずです:
- __CAPGO_KEEP_0__: Apple Developer Team ID
- __CAPGO_KEEP_1__: Apple Developer Portalから取得するキーアイデンティティ
- __CAPGO_KEEP_2__: .p8プライベートキーファイル (base64エンコードが必要)
- __CAPGO_KEEP_3__: Apple Service ID (例えば
com.example.app.service) - __CAPGO_KEEP_4__: ディープリンクURL (例えば
capgo-demo-app://path)
Step 3: Supabase Secrets
Step 3: Supabase SecretsSupabase Edge Functionの環境変数(シークレット)を設定する必要があります。
-
秘密鍵をエンコードする
最初に、Appleの秘密鍵(.p8ファイル)をbase64にエンコードしてください:
ターミナル画面 base64 -i AuthKey_XXXXX.p8コピーする必要があるのは、すべての出力(長い単一の文字列)です。
-
SupabaseのCLIでシークレットを設定する
ターミナル画面 supabase secrets set APPLE_TEAM_ID=your_team_idsupabase secrets set APPLE_KEY_ID=your_key_idsupabase secrets set APPLE_PRIVATE_KEY=your_base64_encoded_keysupabase secrets set ANDROID_SERVICE_ID=your.service.idsupabase secrets set BASE_REDIRECT_URL=your-app://pathsupabase secrets set APPLE_REDIRECT_URI=https://your-project-ref.supabase.co/functions/v1/apple-signin-callback -
代替: Supabase ダッシュボードでシークレットを設定する
ダッシュボードを使用する場合は:
- Supabase プロジェクト ダッシュボードに移動してください
- 以下の手順に従ってください Edge Functions → 設定 → シークレット
- 各シークレット変数に値を追加してください
ステップ 4: 認証ヘルパーを使用する
ステップ 4: 認証ヘルパーを使用するアプリケーションで認証ヘルパーを使用できるようになりました。code。
実装
実装実装の詳細は、 サンプル アプリケーション supabaseAuthUtils.ts ファイル。
認証ヘルパーを使用する
「認証ヘルパーを使用する」のセクションimport { authenticateWithAppleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithAppleSupabase();if (result.success) { console.log('Signed in:', result.user); // Navigate to your authenticated area} else { console.error('Error:', result.error);}ヘルパー関数を更新する
「ヘルパー関数を更新する」のセクションヘルパー関数を使用する場合、次の値を、設定に合わせて更新する必要があります。 authenticateWithAppleSupabase 更新 - この値を、Supabase Edge Function URL に設定してください: __CAPGO_KEEP_0__
-
__CAPGO_KEEP_0__
redirectUrl__CAPGO_KEEP_0__const redirectUrl = platform === 'android'? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
更新
clientId- この値にあなたのApple Service IDを設定してください:await SocialLogin.initialize({apple: {clientId: isIOS? undefined // iOS uses bundle ID automatically: 'your.service.id.here', // Your Apple Service ID for AndroidredirectUrl: redirectUrl,},});
完全な実装 を参照してください。 __CAPGO_KEEP_0__
ステップ 5: インテグレーションをテストする
「ステップ 5: インテグレーションをテストする」というタイトルのセクション-
Android アプリをビルドして実行する
ターミナル画面 npx cap sync androidnpx cap run android -
認証フローをテストする
- 「Apple でサインイン」をタップする
- Apple OAuth ページがブラウザで表示されるはず
- 認証後、ブラウザからアプリに戻されるはず
- コンソールログを確認してエラーがないかを確認する
-
フローの確認
完了したフローは次のようになるはず
- ユーザーが「Appleでサインイン」をタップします。
- アプリがApple OAuthのブラウザを開きます。
- ユーザーがAppleで認証します。
- Appleがリダイレクトします:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback - Edge関数がcodeをトークンに交換します。
- Edge関数がリダイレクトします:
your-app://path?id_token=...&access_token=... - Androidアプリがデープリンクを受け取り、アイデンティティトークンを処理します。
- アプリがアイデンティティトークンでSupabaseにサインインします。
トラブルシューティング
「トラブルシューティング」のセクション認証が失敗した場合:
- リダイレクトURIが一致しません: Apple Developer Portal のリターン URL を正確に確認してください
APPLE_REDIRECT_URI__CAPGO_KEEP_0__ - URL が正しくないため、デープ リンクが機能しません:
AndroidManifest.xmlintent フィルターが正しく設定されていることを確認してくださいBASE_REDIRECT_URL - シークレットが不足しているため、機能しません:
supabase secrets list - すべてのシークレットが正しく設定されていることを確認してくださいトークン エクスチェンジが失敗しました
- : Supabase ダッシュボードのエッジ関数ログを確認してくださいコールバックが受信されていません
onNewIntent: コールバックが正しく実装されていることを確認してください - Review the 例として、code というアプリケーションを参照してください。 参考として
How It Works
「How It Works」というセクションAndroid の場合、Apple Sign-In は OAuth リダイレクト フローを使用します。
- Initialization: プラグインは、サービス ID とバックエンドのリダイレクト URL とともに初期化されます。
- OAuth Flow: ブラウザ/Chrome カスタム タブを開いて、Apple の OAuth ページにアクセスします。
- Backend Callback: Apple は、承認情報 code を含む Supabase Edge Function にリダイレクトします。
- トークン交換: Appleのトークンエンドポイントを使用して、codeをトークンに交換するエッジ関数
- デープリンクリダイレクト: エッジ関数がアイデンティティトークンを含むアプリに戻す
- スーパベース認証: アプリがトークンを受け取り、スーパベースにサインインする
このフローは、AppleがSign in with AppleのネイティブAndroidサポートを提供していないため必要です。