Langsung ke konten

Apple login di Android

GitHub

Login Apple di Android agak hacky. Apple tidak punya dukungan resmi untuk Sign in with Apple di Android, jadi solusinya agak hacky.

Android saat ini memakai Chrome tabs untuk menampilkan website OAuth2. Pendekatan ini punya tantangan:

  • Konfigurasi sulit
  • Membutuhkan backend

Saya akan pakai diagram untuk menjelaskan alur di Android:

Setelah memahami tantangan dan alurnya, mari mulai konfigurasinya.

  1. Login into the Portal Apple Developer.

  2. Klik pada Identifiers.

    Bagian Identifiers di Apple Developer Portal

    Anda akan melihat tampilan seperti ini:

    Layar Identifiers Apple Developer Portal
    1. Pastikan field ini berisi App IDs
    2. Pastikan Anda dapat menemukan App ID Anda.
  3. Pastikan bahwa Sign in with Apple capability sudah aktif untuk aplikasi Anda

    1. Klik pada aplikasi Anda Pilih aplikasi Anda dari daftar
    2. Pastikan bahwa Sign in with Apple capability sudah aktif Checkbox Sign in with Apple capability aktif
    3. Jika belum aktif, silakan aktifkan.
  4. Kembali ke semua All Identifiers

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

    Navigasi ke bagian Service IDs
  6. Buat identifier baru

    1. Click on the plus button

      Tombol Add new service ID
    2. Pilih Servcice IDs dan klik Continue

      Pilih opsi Service IDs
    3. Masukkan deskripsi dan identifier lalu klik Continuie.

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

      Konfirmasi registrasi service ID
    5. Klik pada service yang baru dibuat

      Pilih service ID yang baru dibuat
    6. Aktifkan opsi Sign in with Apple opsi

      Aktifkan Sign in with Apple untuk service ID
    7. Konfigurasikan Sign In with Apple

      Konfigurasi tombol Sign in with Apple
    8. Pastikan bahwa Primary App ID disetel ke App ID yang dikonfigurasi di langkah sebelumnya

      Atur dropdown Primary App ID
    9. Tambahkan domain tempat Anda akan menghosting backend.

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

      Konfirmasi konfigurasi domain dan return URL
    11. Klik pada Continue

      Tombol lanjut untuk konfigurasi layanan
    12. Klik pada Save

      Tombol simpan untuk konfigurasi layanan
  1. Kembali ke semua All Identifiers

    Tombol navigasi Semua Identifiers
  2. Klik pada Keys

    Bagian Keys di Apple Developer Portal
  3. Click on the plus icon

    Tombol tambah key baru
  4. Beri nama key Anda

    Mengisi field nama key
  5. Pilih Sign in with Apple dan klik Configure

    Mengaktifkan dan konfigurasi Sign in with Apple untuk key
  6. Pilih App ID utama, lalu tekan Save

    Memilih App ID utama untuk key
  7. Klik pada Continue

    Tombol Continue untuk konfigurasi key
  8. Klik pada Register

    Tombol Register untuk pembuatan key
  9. Salin key ID dan download key-nya.

    Layar key ID dan tombol download
  10. Cari key yang sudah di-download dan simpan di folder backend.

    File kunci terunduh

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

  1. Buka situs web ini dan scroll ke bawah

  2. Temukan Team ID

    Lokasi Team ID di akun developer

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

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

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

      Intent filter code untuk ditambahkan ke 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. Ubah MainActivity
    1. Silakan buka MainActivity

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

      Code untuk ditambahkan ke MainActivity guna 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, namun konfigurasi backend juga akan berdampak pada iOS. Contoh backend telah disediakan di sini

Contoh ini menyediakan hal berikut:

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

Berdasarkan semua yang telah saya jelaskan di tutorial ini, berikut adalah cara env bagian tersebut:

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

The usage of the login function tidak berubah, sama seperti di iOS. Silakan cek bagian tersebut untuk info lebih lanjut. NAMUN, initialize method 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 tipe App ID
  3. Klik pada tipe App dan klik Continue

    Memilih tipe App
  4. Masukkan deskripsi dan app ID

    Memasukkan deskripsi app dan bundle ID
  5. Aktifkan Sign with Apple capability

    Mengaktifkan capability Sign in with Apple
  6. Klik Continue

    Tombol Continue untuk registrasi app
  7. Konfirmasi detail dan klik Register

    Mengonfirmasi detail registrasi app

Jika Anda menggunakan Apple login di Android untuk merencanakan alur autentikasi dan akun, hubungkan dengan Menggunakan @capgo/capacitor-social-login untuk kapabilitas native di Menggunakan @capgo/capacitor-social-login, @capgo/capacitor-social-login untuk detail implementasi di @capgo/capacitor-social-login, @capgo/capacitor-passkey untuk detail implementasi di @capgo/capacitor-passkey, @capgo/capacitor-native-biometric untuk detail implementasi di @capgo/capacitor-native-biometric, dan Autentikasi dua faktor untuk detail implementasi di autentikasi dua faktor.