AndroidでSupabase Apple Login
インストール手順と、このプラグインの完全なMarkdownガイドを含むセットアッププロンプトをコピーします。
前提条件
「前提条件」セクションこのガイドでは、AndroidでApple Sign-InをSupabase Authenticationと連携する方法を説明します。以下はすでに完了している前提です。
ステップ 1: バックエンドのEdge Functionをデプロイする
「ステップ 1: バックエンドのEdge Functionをデプロイする」というセクションまず、Apple OAuthのコールバックを処理するSupabase Edge Functionをデプロイする必要があります。
-
Supabaseプロジェクトのディレクトリに移動します
ターミナル cd your-project/supabase -
Edge Functionを作成する (存在しない場合)
ターミナル supabase functions new apple-signin-callback -
エッジ関数 code をコピー
エッジ関数の完全な実装はこちらから確認できます: サンプルアプリ.
以下のファイルをプロジェクトにコピーしてください:
supabase/functions/apple-signin-callback/index.ts- メインのエッジ関数 codesupabase/functions/apple-signin-callback/deno.json- 依存関係用のimport map(以下を含む)joseJWT署名用ライブラリ
-
JWT検証の設定
The Apple OAuth callback endpoint must be public (no authentication required) because Apple will redirect to it. Update your
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" -
関数をデプロイする
ターミナル supabase functions deploy apple-signin-callback -
関数のURLを取得する
デプロイ後、以下のようなURLが発行されます:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackURLが見つからない場合は、以下の手順を試してください:
- 開く
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - 次の
apple-signin-callbackURLをコピーするには関数をクリックしてください。
- 開く
ステップ 2: Apple Developer Portalの設定
「ステップ 2: Apple Developer Portalの設定」というセクション次に、バックエンドURLを使用してApple Developer Portalを設定し、必要な値をすべて取得する必要があります。
-
Apple Login Android セットアップガイドに従って、
次の Apple Login Android セットアップガイド to:
- Service ID の作成
- プライベートキー (.p8 ファイル) の生成
- Team ID と Key ID の取得
- Return URL の設定
-
Apple Developer Portal で Return URL を設定
Apple のガイド(ステップ 6.9)に従って Apple Developer Portal で Return URL を設定する際は、Supabase Edge Function URL を使用してください:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback重要: Supabase Edge FunctionのURLを使用してください
以下は 使用しないでください: Apple Login Android SetupガイドにあるリダイレクトURLです。このガイドはカスタムバックエンドサーバーのURLを使用しています。Supabaseと連携する場合は、 必ず 代わりにSupabase Edge FunctionのURLを使用してください。
-
必要な値をすべて用意する
Appleの設定ガイド完了後、以下の値が手元にあるはずです:
- APPLE_TEAM_ID: Apple Developer Team ID
- APPLE_KEY_ID: Apple Developer Portalから取得したKey ID
- APPLE_PRIVATE_KEY: .p8プライベートキーファイル(base64エンコードが必要)
- ANDROID_SERVICE_ID: Apple Service ID(例:
com.example.app.service) - BASE_REDIRECT_URL: ディープリンクURL(例:
capgo-demo-app://path)
ステップ 3: Supabase Secrets の設定
「ステップ 3: Supabase Secrets の設定」というセクション次に、Supabase Edge Function の環境変数(secrets)を設定する必要があります。
-
秘密鍵のエンコード
まず、Appleの秘密鍵(.p8ファイル)をbase64形式でエンコードします:
ターミナル base64 -i AuthKey_XXXXX.p8出力結果をすべてコピーしてください(長い1本の文字列になります)。
-
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 Dashboard でシークレットを設定する
ダッシュボードを使用する場合:
- Supabase プロジェクトのダッシュボードへ移動し、
- 以下を選択してください: Edge Functions → 設定 → Secrets
- 各シークレット変数とその値を設定します
ステップ4: Authentication Helperを使用する
「ステップ4: Authentication Helperを使用する」というセクションこれで、アプリ内の code で認証ヘルパーを使用できるようになります。
実装方法
「実装」セクション完全な実装は以下にあります: サンプルアプリの supabaseAuthUtils.ts ファイル。
Authentication Helperの使用方法
「Authentication Helperの使用方法」セクション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 ヘルパー関数を使用する際は、 必ず 設定に合わせて以下の値を更新してください:
-
アップデート
redirectUrl- Supabase Edge FunctionのURLを設定してください: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,},});
詳細については、 実装の完了 を参考にしてください。
ステップ 5: 連携のテスト
「ステップ 5: 連携のテスト」というセクション-
Android アプリをビルドして実行する
ターミナル npx cap sync androidnpx cap run android -
認証フローをテストする
- 「Sign in with Apple」ボタンをタップする
- ブラウザで Apple OAuth ページが表示されます
- 認証後、アプリにリダイレクトされます
- コンソールログでエラーがないか確認する
-
フローを確認する
全体のフローは以下の通りです:
- ユーザーが「Sign in with Apple」をタップ
- アプリがApple OAuthのブラウザを開く
- ユーザーがAppleで認証を行う
- Appleから以下へリダイレクト:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback - Edge functionがcodeをトークンに交換
- Edge functionから以下へリダイレクト:
your-app://path?id_token=...&access_token=... - Androidアプリがディープリンクを受信し、identity tokenを処理
- アプリがidentity tokenを使用してSupabaseにサインイン
トラブルシューティング
「トラブルシューティング」セクション認証に失敗した場合:
- リダイレクトURIが一致しません: Apple Developer Portal の Return URL が以下と完全に一致しているか確認してください:
APPLE_REDIRECT_URIシークレット - ディープリンクが動作しない: 以下を確認してください:
AndroidManifest.xmlintent filter があなたの設定と一致するか:BASE_REDIRECT_URL - secret が不足しています: 以下を使用して、すべての secret が正しく設定されているか確認してください:
supabase secrets list - Token exchange が失敗する: 詳細なエラーメッセージについては、Supabase Dashboard の edge function logs を確認してください
- アプリにコールバックが届かない: 以下を確認してください:
onNewIntentMainActivity に正しく実装されていること - 以下を確認してください: サンプルアプリ code 参考用
仕組み
「仕組み」セクションAndroidでは、Apple Sign-InはOAuthリダイレクトフローを使用します:
- 初期化:プラグインをService IDとバックエンドのリダイレクトURLで初期化します
- OAuthフロー:AppleのOAuthページをブラウザまたはChrome Custom Tabで開きます
- バックエンドのコールバック:Appleが認証 code を伴って、Supabase Edge Functionへリダイレクトします
- トークン交換: Edge FunctionがAppleのトークンエンドポイントを使用して、codeをトークンに交換します
- ディープリンクによるリダイレクト: Edge FunctionがIDトークンを伴ってアプリへリダイレクトします
- Supabase認証: アプリがトークンを受け取り、Supabaseにサインインします
AppleがAndroid向けの「Sign in with Apple」ネイティブサポートを提供していないため、このフローが必要になります。
AndroidでのSupabase Apple Loginの続き
「AndroidでのSupabase Apple Loginの続き」というタイトルのセクション使用している場合 AndroidでSupabase Apple Login 認証とアカウントフローを計画するには、これを次と連携させてください @capgo/capacitor-social-login の使用 「@capgo/capacitor-social-login の使用」のネイティブ機能のために、 @capgo/capacitor-social-login @capgo/capacitor-social-login の実装の詳細については、 @capgo/capacitor-passkey @capgo/capacitor-passkey の実装詳細については、 @capgo/capacitor-native-biometric @capgo/capacitor-native-biometric の実装の詳細、および 2要素認証 二要素認証の実装の詳細については。