Supabase Apple Login on Android
このプラグインのインストール手順とフルマークダウンガイドを含むセットアップコマンドをコピーします。
前提条件
「前提条件」のセクションThis guide will help you integrate Apple Sign-In with Supabase Authentication on Android.
- このガイドは、AndroidでApple Sign-InとSupabase Authenticationを統合するのに役立ちます。 the.
Apple Sign-In on Android requires a backend server because Apple doesn’t provide native Android support. We’ll use a Supabase Edge Function as the backend.
AndroidでApple Sign-Inを実装するには、バックエンドサーバーが必要です。AppleはAndroidのネイティブサポートを提供していないためです。Supabase Edge Functionを使用してバックエンドを実装します。Step 1: Deploy the Backend Edge Function
-
ステップ 1: バックエンド エッジ関数をデプロイする
Section titled “Step 1: Deploy the Backend 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の検証設定
-
(JWTの署名用のライブラリを含む)
AppleのOAuthコールバックエンドポイントは、Appleがリダイレクトするため、パブリック(認証不要)でなければなりません。
supabase/config.tomlfile:[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-callback見つけることができない場合は、以下の手順に従ってください。
- 開く
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - 「をクリックしてください。
apple-signin-callbackURLをコピーするための関数URL
- 開く
ステップ 2: Apple Developer Portalの設定
Apple Developer Portalの設定に必要な値を取得するために、バックエンド URLと設定する必要があります。ステップ 2: Apple Developer Portalの設定
-
Apple Login Androidセットアップガイドを参照してください
Step 2で Apple Login Androidセットアップガイド に:
- Service IDを作成する
- プライベートキー(.p8ファイル)を生成する
- Team IDとKey IDを取得する
- Return URLを設定する
-
Apple Developer PortalでReturn URLを設定する
Apple Developer Portal (step 6.9) で Return URL を設定する際に、Apple のガイドのステップ 6.9 を参照してください。Capgo の 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 を使用しています。Capgo の Supabase Edge Function URL を使用する必要があります。 厳密な一致が必要です 厳密な一致が必要です
-
Collect all required values
After completing the Apple setup guide, you should have:
- APPLE_TEAM_ID: Your Apple Developer Team ID
- APPLE_KEY_ID: The Key ID from Apple Developer Portal
- APPLE_PRIVATE_KEY: Your .p8 private key file (needs to be base64 encoded)
- ANDROID_SERVICE_ID: Your Apple Service ID (e.g.,
com.example.app.service) - BASE_REDIRECT_URL: Your deep link URL (e.g.,
capgo-demo-app://path)
Supabase 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 -
Step 2から実際の値を使用します。
代替: Supabase ダッシュボードでシークレットを設定
- ダッシュボードを使用する場合は
- Supabase プロジェクト ダッシュボードに移動 へ → Edge Functions → 設定
- シークレット
Step 4: Authentication Helperを使用する
Step 4: Authentication Helperを使用するAuthentication Helperを使用して、codeで実装する
実装
実装The complete implementation is available in the example appの 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);}Helper関数を更新する
セクション「Helper関数を更新する」Authentication Helperを使用する場合、以下の値を更新する必要があります。 authenticateWithAppleSupabase 値を更新する必要があります。 は 必要です。
-
更新
redirectUrl- Supabase エッジ関数の URL に設定してください:const redirectUrl = platform === 'android'? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
更新
clientId- Apple サービス ID に設定してください:await SocialLogin.initialize({apple: {clientId: isIOS? undefined // iOS uses bundle ID automatically: 'your.service.id.here', // Your Apple Service ID for AndroidredirectUrl: redirectUrl,},});
See the __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 の Return URL が正確に一致していることを確認してください
APPLE_REDIRECT_URI秘密 - デープ リンクが機能しない: 以下を確認してください
AndroidManifest.xml意図フィルターがあなたのBASE_REDIRECT_URL - シークレットが不足している: 以下を確認してください
supabase secrets list - すべてのシークレットが正しく設定されていることを確認するにはトークン エクスチェンジが失敗した
- : Supabase ダッシュボードのエッジ関数ログを確認して、詳細なエラーメッセージを確認してください: 確認する
onNewIntentは MainActivity に適切に実装されているか確認する - 例として、参考にするための __CAPGO_KEEP_0__ の例アプリを確認する example app code セクション: “How It Works”
Android の場合、Apple Sign-In は OAuth リダイレクト フローを使用します:
初期化: プラグインは Service ID とバックエンドのリダイレクト URL で初期化されます
- OAuth Flow: Apple の OAuth ページにブラウザ/Chrome カスタム タブを開く
- Section titled “How It Works”On Android, Apple Sign-In uses an OAuth redirect flow:
- バックエンドコールバック: Appleが認証codeを含むSupabase Edge Functionにリダイレクトします。
- トークン交換: Appleのトークンエンドポイントを使用してcodeをトークンに交換するエッジ関数
- ディープリンクリダイレクト: エッジ関数がアイデンティティトークンを含むアプリにリダイレクトします。
- サプバース認証: アプリがトークンを受け取り、サプバースにサインインします。
このフローは、AppleがSign in with AppleのネイティブAndroidサポートを提供していないため必要です。
サプバースAppleログインのAndroidから続けて
: AppleログインのAndroidから続けてサプバースにログインする方法サプバースAppleログインのAndroidから続けてのセクション Apple Android の Supabase ログイン 認証とアカウントフローの計画に役立つため、 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要素認証