Konfigurasi Apple Sign-in

Penggunaan Apple ID di MBaaS memiliki perbedaan alur dibandingkan akun-akun social media lainnya, sehingga membutuhkan konfigurasi yang juga cukup unik.

  • Alur social login secara umum: Halaman OAuth ➜ Redirect ke frontend ➜ Verify OAuth ➜ Pengguna baru mendapat: oauthKey, email, name.
  • Alur social login khusus Apple: Halaman OAuth ➜ Redirect ke backend (otomatis verify OAuth) ➜ Redirect lagi ke frontend (sudah berbekal oauthKey dari backend) ➜ Kirim balik oauthKey ➜ Pengguna baru mendapat: oauthKey (yang sama), email, name + beberapa info tambahan.

Hal itu disebabkan oleh aturan dari Apple: jika dalam proses OAuth kita meminta email dan nama pengguna, maka redirect harus menggunakan method POST, yang berarti hanya backend yang bisa menerimanya.

Jika Anda butuh panduan konfigurasi di Apple Developer Portal, artikel dari Okta cukup membantu.

Berikutnya, hal-hal yang harus diperhatikan:

  1. Di Apple Developer Portal > Services ID > Register Website URLs, isikan Domains dan Return URLs dengan domain yang benar (localhost tidak diperbolehkan). Return URLs harus sesuai pola: {http|https}://{domain_backend}/services/auth/apple-redirect.
    Register Website URLs

  2. Di Moco BaaS Console > Environment Settings > Auth Redirect URLs, isikan Backend Base URL. Domainnya harus sama dengan domain yang diisikan di Apple Developer Portal.

  3. Di Moco BaaS Console > User Configuration > Social Media Login, ada 4 isian untuk Apple: 3 isian yang pertama bisa Anda salin dari Apple Developer Portal, sedangkan untuk Callbacks harus diisi dengan URL di domain frontend. Isian Callbacks ini akan digunakan oleh MBaaS untuk memvalidasi parameter callback ketika init OAuth (GET /services/auth).

  4. Generate private key di Apple Developer Portal, lalu simpan dengan nama apple.p8 di dalam folder signing-keys.

  5. Hasil dari halaman OAuth, utamanya ada id, email dan name, yang akan diberikan di endpoint login (POST /services/auth). Tapi dari Apple ada kondisi seperti ini: khusus untuk name hanya muncul sekali, yaitu setelah pengguna menyelesaikan halaman OAuth untuk pertama kali. Di kesempatan-kesempatan OAuth berikutnya, name tidak akan muncul, kecuali jika pengguna yang bersangkutan melakukan revoke access di halaman appleid.apple.com.