メインコンテンツへスキップ

AndroidでのApple login

GitHub

AndroidでのAppleログインは少し強引な実装です。Appleは Sign in with Apple Androidを公式にサポートしていないため、解決策も少し強引です。

現在、AndroidではOAuth2のWebサイトを表示するためにChromeタブを使用しています。この手法には次の課題があります:

  • 設定が複雑
  • バックエンドが必要

図を使ってAndroidでのフローを説明します:

課題とフローを把握したところで、設定を開始しましょう。

  1. にログインしてください Apple Developer Portal.

  2. 次をクリックします: Identifiers.

    Apple Developer Portal の Identifiers セクション

    次のような画面が表示されます:

    Apple Developer Portal の Identifiers 画面
    1. このフィールドが以下のようになっていることを確認してください: App IDs
    2. App ID が見つかることを確認してください。
  3. 以下の項目が Sign in with Apple アプリで有効になっていることを確認してください

    1. アプリをクリックしてください リストからアプリを選択して
    2. 以下の項目が Sign in with Apple 有効であることを確認してください Sign in with Apple capability の有効化チェックボックス
    3. 有効になっていない場合は、有効にしてください。
  4. 「すべて」に戻り All Identifiers

    「All Identifiers」ナビゲーションボタン
  5. 次をクリックします: App Ids から以下へ移動します Services IDs

    Services IDs セクションへの移動
  6. 新しい識別子の作成

    1. プラスボタンをクリック

      新規 Service ID 追加ボタン
    2. 選択します Servcice IDs をクリックし、 Continue

      Service IDs オプションの選択
    3. 説明と識別子を入力してクリック Continuie.

      Service ID の詳細入力
    4. 詳細を確認して、クリックしてください Register

      サービスIDの登録確認
    5. 作成したばかりのサービスをクリック

      作成したサービスIDを選択
    6. その Sign in with Apple オプション

      サービスIDでSign in with Appleを有効化
    7. 次の Sign In with Apple

      Sign in with Appleの設定ボタン
    8. 以下の項目が Primary App ID 前のステップで設定したApp IDになっていることを確認

      Primary App IDのドロップダウン設定
    9. バックエンドをホストするドメインを追加します。

      ドメインとリターンURLフィールドの設定
    10. データを確認してクリックしてください Done

      ドメインとリターンURLの設定を確認中
    11. 次をクリックします: Continue

      サービス設定の続行ボタン
    12. 次をクリックします: Save

      サービス設定の保存ボタン
  1. 一覧に戻る All Identifiers

    すべての識別子へのナビゲーションボタン
  2. 次をクリックします: Keys

    Apple Developer PortalのKeysセクション
  3. プラスアイコンをクリック

    新規キー追加ボタン
  4. キーの名前を入力

    キー名の入力
  5. 選択します Sign in with Apple をクリックし、 Configure

    キーのSign in with Appleの有効化と設定
  6. プライマリApp IDを選択して、以下を押します Save

    キーのプライマリApp IDを選択中
  7. 次をクリックします: Continue

    設定を進めるボタン
  8. 次をクリックします: Register

    キー作成ボタン
  9. Key IDをコピーしてキーをダウンロードします。

    Key IDとダウンロードボタンの画面
  10. ダウンロードしたキーを探し、バックエンドのフォルダに保存してください。

    ダウンロードしたキーファイル

を使用するには、 Login with Apple Androidでは、以下を取得する必要があります。 Team IDこれはバックエンドで使用されます。

  1. 以下に移動します: こちらのウェブサイト までスクロールして

  2. 〜を探します Team ID

    デベロッパーアカウント内のTeam IDの場所

図で見たとおり、バックエンドは次のステップを実行します。 Redirect back to the appこれにはアプリへの手動変更が必要です。

  1. 次を変更します: AndroidManifest.xml
    1. ファイルを開きます。ここでは AndroidStudio

      Android Studio で AndroidManifest.xml ファイルに
    2. 〜を探します MainActivity 次の Intent filter を追加します。

      MainActivity に追加する Intent filter code
      <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="capgo-demo-app" android:host="path" />
      </intent-filter>
  2. 次を変更します: MainActivity
    1. 以下を開いてください: MainActivity

      Android StudioのMainActivity.javaファイル
    2. 以下のcodeを追加してください:

      ディープリンクを処理するためにMainActivityに追加するCode
      @Override
      protected void onNewIntent(Intent intent) {
      String action = intent.getAction();
      Uri data = intent.getData();
      if (Intent.ACTION_VIEW.equals(action) && data != null) {
      PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
      if (pluginHandle == null) {
      Log.i("Apple Login Intent", "SocialLogin login handle is null");
      return;
      }
      Plugin plugin = pluginHandle.getInstance();
      if (!(plugin instanceof SocialLoginPlugin)) {
      Log.i("Apple Login Intent", "SocialLogin plugin instance is not SocialLoginPlugin");
      return;
      }
      ((SocialLoginPlugin) plugin).handleAppleLoginIntent(intent);
      return;
      }
      super.onNewIntent(intent);
      }

Androidではバックエンドが必要ですが、その設定はiOSにも影響します。以下にバックエンドの例を用意しました。 こちら

この例では、以下の機能を提供します:

  • シンプルなJSONデータベース
  • AppleのサーバーからJWTをリクエストする仕組み
  • シンプルなJWT検証機能

このチュートリアルの内容を踏まえると、 env セクションは以下のようになります:

  • ANDROID_SERVICE_ID = サービスID
  • IOS_SERVICE_ID = App ID
env: {
PRIVATE_KEY_FILE: "AuthKey_U93M8LBQK3.p8",
KEY_ID: "U93M8LBQK3",
TEAM_ID: "UVTJ336J2D",
ANDROID_SERVICE_ID: "ee.forgr.io.ionic.starter.service2",
IOS_SERVICE_ID: "me.wcaleniewolny.test.ionic.vue",
PORT: 3000,
REDIRECT_URI: "https://xyz.wcaleniewolny.me/login/callback",
BASE_REDIRECT_URL: "capgo-demo-app://path"
}

関数の使い方は login 変わりません。iOSと同じです。詳細は該当セクションを参照してください。 ただし、この initialize メソッドは少し異なります。

await SocialLogin.initialize({
apple: {
clientId: 'ee.forgr.io.ionic.starter.service2',
redirectUrl: 'https://appleloginvps.wcaleniewolny.me/login/callback'
}
})
  1. App IDがない場合は、プラスボタンをクリックしてください

    新規識別子を追加するプラスボタン
  2. 選択します App IDs 「Continue」をクリックします

    App IDのタイプを選択
  3. タイプをクリック App をクリックし、 Continue

    Appタイプを選択
  4. 説明とApp IDを入力してください

    アプリの説明とBundle IDの入力
  5. 有効にする Sign with Apple capability

    Sign in with Appleのcapabilityを有効化
  6. クリック Continue

    アプリ登録の続行ボタン
  7. 詳細を確認してクリック Register

    アプリ登録情報の確認

使用している場合 Androidでの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要素認証 二要素認証の実装の詳細については。