コンテンツに進む

Capgo でアプリを ship する

GitHub

前提条件

「前提条件」

このガイドでは、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をデプロイする必要があります。

  1. プロジェクトディレクトリに移動してください

    ターミナル画面
    cd your-project/supabase
  2. エッジ関数を作成する 存在しない場合

    ターミナル画面
    supabase functions new apple-signin-callback
  3. エッジ関数をコピーしてください code

    実装は例のアプリケーションにあります example app.

    - メインエッジ関数

    • supabase/functions/apple-signin-callback/index.ts - メインエッジ機能 code
    • supabase/functions/apple-signin-callback/deno.json - 依存関係のインポートマップ (includes jose JWT署名用ライブラリ)
  4. JWT検証の設定

    Apple OAuthコールバックエンドは、Appleがリダイレクトするため、パブリックに公開する必要があります (認証が必要ありません)。Apple OAuthのリダイレクト先のエンドポイントを更新してください。 supabase/config.toml ファイル:

    [functions.apple-signin-callback]
    enabled = true
    verify_jwt = false # Important: Set to false for public OAuth callback
    import_map = "./functions/apple-signin-callback/deno.json"
    entrypoint = "./functions/apple-signin-callback/index.ts"
  5. 関数をデプロイ

    ターミナルウィンドウ
    supabase functions deploy apple-signin-callback
  6. URLを取得する

    デプロイ後、次のURLが得られます:

    https://your-project-ref.supabase.co/functions/v1/apple-signin-callback

    もし見つけることができなければ、以下の手順に従ってください。

    1. Open https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions
    2. 開く apple-signin-callback URLをクリックしてコピーします。 Supabase Functions Apple Sign-In Callback

ステップ2: Apple Developer Portalの設定

Section titled “Step 2: Apple Developer Portalの設定”

Apple Developer PortalをバックエンドURLとともに設定し、必要な値をすべて取得する必要があります。

  1. Apple Login Androidの設定ガイドを参照してください

    Apple Login Androidの設定ガイドを完了してください を参照してください サービスIDを作成する

    • プライベートキー(.p8ファイル)を生成する
    • チームIDとキーIDを取得する
    • Section titled “Step 2: Apple Developer Portalの設定”
    • URLを設定
  2. 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 必須

  3. 必要な値をすべて収集する

    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 を構成する必要があります。

  1. プライベート キーをエンコードする

    最初に、Apple のプライベート キー (.p8 ファイル) を base64 にエンコードします。

    ターミナル ウィンドウ
    base64 -i AuthKey_XXXXX.p8

    コピーする

  2. Set secrets using Supabase CLI

    ターミナル ウィンドウ
    supabase secrets set APPLE_TEAM_ID=your_team_id
    supabase secrets set APPLE_KEY_ID=your_key_id
    supabase secrets set APPLE_PRIVATE_KEY=your_base64_encoded_key
    supabase secrets set ANDROID_SERVICE_ID=your.service.id
    supabase secrets set BASE_REDIRECT_URL=your-app://path
    supabase secrets set APPLE_REDIRECT_URI=https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
  3. 代替: Supabase ダッシュボードでシークレットを設定

    ダッシュボードを使用したい場合は

    1. Supabase プロジェクトダッシュボードに移動
    2. ナビゲート エッジ関数 → 設定 → シークレット
    3. 各シークレット変数と値を追加

ステップ 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 コピー 必須 以下の値を、設定に合わせて更新してください。

  1. アップデート redirectUrl - Supabase エッジ関数 URL を設定します。

    const redirectUrl = platform === 'android'
    ? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback'
    : undefined;
  2. アップデート clientId クリップボードにコピー

    await SocialLogin.initialize({
    apple: {
    clientId: isIOS
    ? undefined // iOS uses bundle ID automatically
    : 'your.service.id.here', // Your Apple Service ID for Android
    redirectUrl: redirectUrl,
    },
    });

See the 完全実装 for reference.

ステップ 5: インテグレーションのテスト

Step 5: Test the Integration
  1. Android アプリをビルドして実行してください

    ターミナル画面
    npx cap sync android
    npx cap run android
  2. 認証フローをテストしてください

    • 「Appleでサインイン」をタップしてください
    • Apple OAuth画面がブラウザで表示されるはずです
    • Appleサインインを完了した後、ユーザーはアプリに戻されるはずです。
    • コンソールログを確認して、エラーがないかを確認してください。
  3. フローの確認

    完了したフローは次のようになります。

    1. ユーザーが「Appleでサインイン」をタップします。
    2. アプリがApple OAuthのブラウザを開きます。
    3. ユーザーがAppleで認証します。
    4. Appleがリダイレクトします。 https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
    5. Edge Functionがcodeをトークンに交換します。
    6. Edge Functionがリダイレクトします。 your-app://path?id_token=...&access_token=...
    7. Androidアプリがデープリンクを受け取り、アイデンティティトークンを処理します。
    8. アプリがアイデンティティトークンで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」セクション

  1. Initialization初期化
  2. OAuth Flow: AppleのOAuthページを開くブラウザ/Chromeカスタムタブを開きます
  3. バックエンドコールバック: Appleは、認証codeを含むSupabase Edge Functionにリダイレクトします
  4. トークン交換: Edge Functionは、Appleのトークンエンドポイントを使用してcodeをトークンに交換します
  5. ディープリンク リダイレクト: Edge Functionは、アイデンティティトークンを含むアプリにリダイレクトします
  6. サプバース認証: アプリはトークンを受け取り、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要素認証の実装詳細について