AppleのSupabaseログインをAndroidで
このプラグインのインストール手順と全マークダウンガイドを含む設定用質問をコピーする。
前提条件
前提条件このガイドでは、AndroidでApple Sign-InとSupabase Authenticationを統合する方法について説明します。Apple Sign-Inを使用するには、Appleが提供するAndroidのネイティブサポートがないため、バックエンドサーバーが必要です。このガイドでは、Supabase Edge Functionを使用してバックエンドサーバーを構築します。
- Supabase Apple Login - General Setup 重要.
Step 1: Deploy the Backend Edge Function
最初に、Apple OAuthコールバックを処理するSupabase Edge Functionをデプロイする必要があります。Navigate to your Supabase project directory
-
Supabaseプロジェクトディレクトリに移動
ターミナル画面 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- ライブラリの依存関係のインポートマップjoseJWT署名用ライブラリ)
-
JWT検証設定
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" -
関数をデプロイ
ターミナルウィンドウ supabase functions deploy apple-signin-callback -
機能URLを取得
__CAPGO_KEEP_0__のURLが取得されます。
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback__CAPGO_KEEP_0__が見つからない場合は、以下の手順に従ってください。
- Open
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - __CAPGO_KEEP_0__をクリックします。
apple-signin-callbackApple Sign-In Callbackの機能URLをコピー
- Open
Supabase Functions Apple Sign-In Callback
Step 2: Apple Developer Portalの設定Apple Developer PortalをバックエンドURLとともに設定し、必要な値をすべて取得する必要があります。
-
Apple Login Androidセットアップガイドを参照してください
Apple Login Androidセットアップガイドを完了してください を: サービスIDを作成する
- プライベートキー(.p8ファイル)を生成する
- チームIDとキーIDを取得する
- Apple Login Androidセットアップガイド
- Return URLを設定
-
Apple Developer PortalでReturn URLを設定
Apple Developer PortalでReturn URLを設定する際 (Appleガイドのステップ 6.9)、Supabase Edge Function URLを使用してください:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback重要: Supabase Edge Function URLを使用してください
使用しないでください Apple Login Android セットアップ ガイドから取得したリダイレクト URL 。そのガイドはカスタム バックエンド サーバー URLを使用しています。Supabase統合の場合、必ずSupabase Edge Function URLを使用してください。 厳密に一致させる必要があります Apple Developer PortalでReturn URLを設定する際 (Appleガイドのステップ 6.9)、Supabase Edge Function URLを使用してください:__CAPGO_KEEP_0__
-
必要な値をすべて収集する
Apple の設定ガイドを完了した後、以下の値を取得する必要があります。
- __CAPGO_KEEP_0__: Apple Developer Team ID
- : Apple Developer Portal から取得する Key ID: .p8 私的鍵ファイル (base64 エンコードが必要)
- APPLE_PRIVATE_KEYAPPLE_KEY_ID
- ANDROID_SERVICE_ID: Apple サービス ID (例えば、
com.example.app.service) - BASE_REDIRECT_URL: ディープ リンク URL (例えば、
capgo-demo-app://path)
Step 3: Supabaseのシークレットを設定する
「Step 3: Supabaseのシークレットを設定する」というセクションSupabase Edge Functionの環境変数(シークレット)を設定する必要があります。
-
プライベートキーをエンコードする
まず、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 ダッシュボードでシークレットを設定
ダッシュボードを使用したい場合は:
- Supabase プロジェクト ダッシュボードに移動
- を参照 Edge Functions → 設定 → シークレット
- 各シークレット変数と値を追加
Step 4: 認証ヘルパーを使用する
ここで、認証ヘルパーをアプリ内で使用できます。__CAPGO_KEEP_0__。Now you can use the authentication helper in your app 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);}ヘルパー関数を使用する場合
__CAPGO_KEEP_0____CAPGO_KEEP_0__ authenticateWithAppleSupabase __CAPGO_KEEP_0__ 必須 __CAPGO_KEEP_0__
-
更新
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,},});
詳細は 参考実装を参照してください。 Step 5: Androidアプリの統合テスト
タイトル「Step 5: Androidアプリの統合テスト」
Androidアプリをビルドして実行してください。-
ターミナル画面
クリップボードにコピー npx cap sync androidnpx cap run android -
「Appleでサインイン」をタップしてください。
- Apple OAuth画面がブラウザで表示されます。
- Apple OAuth画面がブラウザで表示されます。
- 認証が完了したら、戻るようにアプリにリダイレクトされるはずです。
- コンソールログを確認して、エラーがないか確認してください。
-
フローを確認してください。
完了するフローは次のようになります。
- ユーザーが「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アプリがデープリンクを受け取り、アイデンティティトークンを処理します。
- アプリがアイデンティティトークンでSupabaseにサインインします。
トラブルシューティング
トラブルシューティング認証が失敗した場合:
- リダイレクト URI の一致が不正: Apple Developer Portal の Return URL が正確に一致していることを確認してください
APPLE_REDIRECT_URIシークレット - デープ リンクが機能しない:
AndroidManifest.xmlintent フィルタが正しく設定されていることを確認してくださいBASE_REDIRECT_URL - シークレットが不足している:
supabase secrets list - すべてのシークレットが正しく設定されていることを確認してください。使用する方法は「Capgo」で確認してください。: Supabase ダッシュボードでエッジ関数ログを確認して、詳細なエラーメッセージを参照してください
- Appはコールバックを受信しません: 確認してください
onNewIntentMainActivityで正しく実装されていることを確認してください - 参考用に例のアプリを __CAPGO_KEEP_0__ example app code 「How It Works」のセクション
Androidでは、Apple Sign-InはOAuthリダイレクトフローを使用します:
初期化: プラグインは、Service IDとバックエンドリダイレクトURLで初期化されます
- How It WorksAndroidでは、Apple Sign-InはOAuthリダイレクトフローを使用します。
- OAuth フロー: AppleのOAuthページを開くブラウザ/Chromeカスタムタブを開きます
- バックエンドコールバック: Appleは認証codeを受け取ったあと、Supabase Edge Functionにリダイレクトします
- トークン交換: Edge FunctionはAppleのトークンエンドポイントを使用してcodeをトークンに交換します
- ディープリンクリダイレクト: Edge Functionはあなたのアプリにアイデンティティトークンを含むリダイレクトします
- Supabase認証: アプリはトークンを受け取り、Supabaseにサインインします
このフローは、AppleがSign in with AppleのネイティブAndroidサポートを提供していないため必要です。
続けて、Supabase Apple Login on Androidから進みます
「Supabase Apple Login on Android」から続けてCapgoを使用している場合 Supabase Apple Login on Android 認証とアカウントフローの計画に使用し、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の「@capgo/capacitor-native-biometric」 Capgoの「@capgo/capacitor-native-biometric」 Capgoの「@capgo/capacitor-native-biometric」 2要素認証 2要素認証の実装詳細について