Capgo でアプリを ship する
このプラグインのインストール手順と全マークダウンガイドを含む設定プロンプトをコピーできます。
前提条件
「前提条件」このガイドでは、AndroidでApple Sign-InとSupabase Authenticationを統合する方法を説明します。Apple Sign-InはAndroidでネイティブサポートを提供していないため、バックエンドサーバーが必要です。Capgoでは、Supabase Edge Functionを使用してバックエンドを実装します。
Step 1: Supabase Edge Functionをデプロイする
「Step 1: Supabase Edge Functionをデプロイする」最初に、Apple OAuthコールバックを処理するためのSupabase Edge Functionをデプロイする必要があります。
-
プロジェクトディレクトリに移動してください
ターミナル画面 cd your-project/supabase -
エッジ関数を作成する 存在しない場合
ターミナル画面 supabase functions new apple-signin-callback -
エッジ関数をコピーしてください code
実装は例のアプリケーションにあります example app.
- メインエッジ関数
supabase/functions/apple-signin-callback/index.ts- メインエッジ機能 codesupabase/functions/apple-signin-callback/deno.json- 依存関係のインポートマップ (includesjoseJWT署名用ライブラリ)
-
JWT検証の設定
Apple OAuthコールバックエンドは、Appleがリダイレクトするため、パブリックに公開する必要があります (認証が必要ありません)。Apple OAuthのリダイレクト先のエンドポイントを更新してください。
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-callbackもし見つけることができなければ、以下の手順に従ってください。
- Open
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - 開く
apple-signin-callbackURLをクリックしてコピーします。
- Open
ステップ2: Apple Developer Portalの設定
Section titled “Step 2: Apple Developer Portalの設定”Apple Developer PortalをバックエンドURLとともに設定し、必要な値をすべて取得する必要があります。
-
Apple Login Androidの設定ガイドを参照してください
Apple Login Androidの設定ガイドを完了してください を参照してください サービスIDを作成する
- プライベートキー(.p8ファイル)を生成する
- チームIDとキーIDを取得する
- Section titled “Step 2: Apple Developer Portalの設定”
- URLを設定
-
Apple Developer PortalでURLを設定
Apple Developer PortalでURLを設定する際(Appleガイドのステップ6.9)、Supabase Edge Function URLを使用してください:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback重要: Supabase エッジ関数 URL を使用してください
しないでください 使用しないでください Apple Login AndroidセットアップガイドからURL must 必須
-
必要な値をすべて収集する
Appleの設定ガイドを完了した後、次の値を取得する必要があります:
- APPLE_TEAM_ID: Apple Developer Team ID
- APPLE_KEY_ID: Apple Developer Portalから取得するキーアイディ
- APPLE_PRIVATE_KEY: .p8プライベートキーファイル (base64エンコードが必要)
- ANDROID_SERVICE_ID: Apple サービス ID (例えば、
com.example.app.service) - BASE_REDIRECT_URL: 認証後にバックエンドがリダイレクトするためのデープリンク URL (例えば、
capgo-demo-app://path)
ステップ 3: Supabase のシークレットを設定する
「ステップ 3: Supabase のシークレットを設定する」環境変数(シークレット)を設定するために、Supabase Edge Function を構成する必要があります。
-
プライベート キーをエンコードする
最初に、Apple のプライベート キー (.p8 ファイル) を base64 にエンコードします。
ターミナル ウィンドウ base64 -i AuthKey_XXXXX.p8コピーする
-
Set secrets using 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 プロジェクトダッシュボードに移動
- ナビゲート エッジ関数 → 設定 → シークレット
- 各シークレット変数と値を追加
ステップ 4: 認証ヘルパーを使用する
Step 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 コピー 必須 以下の値を、設定に合わせて更新してください。
-
アップデート
redirectUrl- Supabase エッジ関数 URL を設定します。const redirectUrl = platform === 'android'? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
アップデート
clientIdクリップボードにコピー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 完全実装 for reference.
ステップ 5: インテグレーションのテスト
Step 5: Test the Integration-
Android アプリをビルドして実行してください
ターミナル画面 npx cap sync androidnpx cap run android -
認証フローをテストしてください
- 「Appleでサインイン」をタップしてください
- Apple OAuth画面がブラウザで表示されるはずです
- Appleサインインを完了した後、ユーザーはアプリに戻されるはずです。
- コンソールログを確認して、エラーがないかを確認してください。
-
フローの確認
完了したフローは次のようになります。
- ユーザーが「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.xml秘密鍵が欠落しているBASE_REDIRECT_URL - : 正しく設定されていることを確認するにはトークン交換が失敗
supabase secrets list - __CAPGO_KEEP_0__: Supabase ダッシュボードでエッジ関数ログを確認して、詳細なエラーメッセージを参照してください。
- アプリがコールバックを受信しない: Ensure
onNewIntentは適切に実装されていることを確認してください。 - を確認してください。 例として、参考にすることができる code アプリがあります。 を参照してください。
「How It Works」セクション
- Initialization初期化
- OAuth Flow: AppleのOAuthページを開くブラウザ/Chromeカスタムタブを開きます
- バックエンドコールバック: Appleは、認証codeを含むSupabase Edge Functionにリダイレクトします
- トークン交換: Edge Functionは、Appleのトークンエンドポイントを使用してcodeをトークンに交換します
- ディープリンク リダイレクト: Edge Functionは、アイデンティティトークンを含むアプリにリダイレクトします
- サプバース認証: アプリはトークンを受け取り、Supabaseにサインインします
Apple サインインのためのネイティブ アンドロイド サポートは提供されていないため、このフローは必要です。
: Sign in with AppleのネイティブAndroidサポートが提供されていないため、このフローは必要です。
Supabase Apple Android のログインを継続するあなたが使用している Supabase Apple Android のログイン 認証とアカウントフローの計画に使用している場合、Supabase Apple Android を 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 Using @capgo/capacitor-native-biometric 2要素認証 2要素認証の実装詳細について