Langsung ke konten

Login Apple di Android

Login Apple di Android agak rumit. Apple tidak memiliki dukungan resmi untuk Sign in with Apple di Android, jadi solusinya sedikit rumit.

Android saat ini menggunakan tab Chrome untuk menampilkan situs web OAuth2. Pendekatan ini memiliki tantangan:

  • Konfigurasi yang sulit
  • Backend diperlukan

Mari saya gunakan diagram untuk menjelaskan alur di Android:

        flowchart TD
            A("await SocialLogin.login()") -->|Handled in the plugin|B(Generate the login URL)
            B --> |Pass the link| C(Open the Chrome browser)
            C --> D(Wait for the user to login)
            D --> |Apple redirects to your backend|E(Handle the data returned from Apple)
            E --> F(Redirect back to the app)
            F --> G(Return to JS)
        

Sekarang setelah Anda mengetahui tantangan dan alurnya, mari kita mulai konfigurasi.

  1. Login ke Portal Developer Apple.

  2. Klik pada Identifiers.

    Bagian Identifiers di Portal Developer Apple

    Anda harus melihat layar yang terlihat seperti ini:

    Layar Identifiers di Portal Developer Apple
    1. Pastikan field ini mengatakan App IDs
    2. Pastikan Anda dapat menemukan App ID Anda.
  3. Pastikan bahwa kemampuan Sign in with Apple diaktifkan untuk aplikasi Anda

    1. Klik pada aplikasi Anda Memilih aplikasi Anda dari daftar
    2. Pastikan bahwa kemampuan Sign in with Apple diaktifkan Checkbox kemampuan Sign in with Apple diaktifkan
    3. Jika belum diaktifkan, aktifkan.
  4. Kembali ke All Identifiers

    Tombol navigasi All Identifiers
  5. Klik pada App Ids dan pergi ke Services IDs

    Navigasi ke bagian Services IDs
  6. Buat identifier baru

    1. Klik tombol plus

      Tombol tambah ID layanan baru
    2. Pilih Servcice IDs dan klik Continue

      Memilih opsi Service IDs
    3. Masukkan deskripsi dan identifier dan klik Continuie.

      Memasukkan detail ID layanan
    4. Silakan verifikasi detailnya dan klik Register

      Mengonfirmasi pendaftaran ID layanan
    5. Klik pada layanan yang baru dibuat

      Memilih ID layanan yang baru dibuat
    6. Aktifkan opsi Sign in with Apple

      Mengaktifkan Sign in with Apple untuk ID layanan
    7. Konfigurasi Sign In with Apple

      Tombol Configure untuk Sign in with Apple
    8. Pastikan bahwa Primary App ID diatur ke App ID yang dikonfigurasi di langkah sebelumnya

      Dropdown pengaturan Primary App ID
    9. Tambahkan domain tempat Anda akan menghosting backend Anda.

      Mengatur field domain dan return URL
    10. Konfirmasikan data dan klik Done

      Mengonfirmasi konfigurasi domain dan return URL
    11. Klik pada Continue

      Tombol Continue untuk konfigurasi layanan
    12. Klik pada Save

      Tombol Save untuk konfigurasi layanan
  1. Kembali ke All Identifiers

    Tombol navigasi All Identifiers
  2. Klik pada Keys

    Bagian Keys di Portal Developer Apple
  3. Klik pada ikon plus

    Tombol tambah key baru
  4. Beri nama key Anda

    Field memasukkan nama key
  5. Pilih Sign in with Apple dan klik Configure

    Mengaktifkan dan mengkonfigurasi Sign in with Apple untuk key
  6. Pilih primary App ID, dan tekan Save

    Memilih primary App ID untuk key
  7. Klik pada Continue

    Tombol Continue untuk konfigurasi key
  8. Klik pada Register

    Tombol Register untuk pembuatan key
  9. Salin ID key dan unduh key.

    Layar ID Key dan tombol unduh
  10. Temukan key yang diunduh dan simpan di folder backend.

    File key yang diunduh

Untuk menggunakan Login with Apple di Android, Anda perlu mendapatkan Team ID. Ini akan digunakan di backend.

  1. Pergi ke situs web ini dan scroll ke bawah

  2. Temukan Team ID

    Lokasi Team ID di akun developer

Seperti yang Anda lihat di diagram, backend melakukan langkah yang disebut Redirect back to the app. Ini memerlukan perubahan manual pada aplikasi Anda.

  1. Modifikasi AndroidManifest.xml
    1. Buka file, saya akan menggunakan AndroidStudio

      File AndroidManifest.xml di Android Studio
    2. Temukan MainActivity dan tambahkan Intent filter berikut

      Kode Intent filter untuk ditambahkan di MainActivity
      <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. Modifikasi MainActivity
    1. Silakan buka MainActivity

      File MainActivity.java di Android Studio
    2. Tambahkan kode berikut:

      Kode untuk ditambahkan ke MainActivity untuk menangani deep link
      @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);
      }

Backend diperlukan untuk Android, tetapi mengkonfigurasi backend juga akan berdampak pada IOS. Contoh backend disediakan di sini

Contoh ini menyediakan hal berikut:

  • Database JSON sederhana
  • Cara untuk meminta JWT dari server Apple
  • Verifikasi JWT sederhana

Mengingat semua yang saya katakan dalam tutorial ini, berikut adalah bagaimana bagian env akan terlihat:

  • ANDROID_SERVICE_ID = ID Layanan
  • 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"
}

Penggunaan fungsi login tidak berubah, sama seperti IOS. Silakan lihat bagian itu untuk info lebih lanjut. NAMUN, metode initialize sedikit berubah.

await SocialLogin.initialize({
apple: {
clientId: 'ee.forgr.io.ionic.starter.service2',
redirectUrl: 'https://appleloginvps.wcaleniewolny.me/login/callback'
}
})
  1. Jika Anda belum memiliki App ID, klik tombol plus

    Tombol plus tambah identifier baru
  2. Pilih App IDs dan klik continue

    Memilih jenis App IDs
  3. Klik pada jenis App dan klik Continue

    Memilih jenis App
  4. Masukkan deskripsi dan app ID

    Memasukkan deskripsi dan bundle ID aplikasi
  5. Aktifkan kemampuan Sign with Apple

    Mengaktifkan kemampuan Sign in with Apple
  6. Klik Continue

    Tombol Continue untuk pendaftaran aplikasi
  7. Konfirmasikan detail dan klik Register

    Mengonfirmasi detail pendaftaran aplikasi