Memproses login pengguna dengan Apple di Android
Dokumen ini menunjukkan cara menggunakan Identity Platform untuk menambahkan Login dengan Apple ke aplikasi Android Anda.
Sebelum memulai
Aktifkan Identity Platform dan miliki aplikasi Android dasar. Untuk mempelajari cara mengaktifkan Identity Platform dan login, lihat Panduan memulai.
Bergabunglah dengan Apple Developer Program.
Mengonfigurasi aplikasi Anda dengan Apple
Di situs Apple Developer:
Ikuti langkah-langkah di Mengonfigurasi Login dengan Apple untuk web. Hal ini mencakup:
Mendaftarkan Return URL, yang terlihat seperti:
https://project-id.firebaseapp.com/__/auth/handler
Menghosting file sementara di URL berikut untuk memverifikasi domain Anda:
https://project-id.firebaseapp.com/.well-known/apple-developer-domain-association.txt
Selain itu, catat Services ID dan Apple team ID — Anda akan memerlukannya di bagian berikutnya.
Gunakan kunci pribadi Apple untuk membuat login. Anda akan memerlukan kunci dan ID-nya di bagian berikutnya.
Jika Anda menggunakan Identity Platform untuk mengirim email kepada pengguna, konfigurasikan project Anda dengan layanan relai email pribadi Apple menggunakan email berikut:
noreply@project-id.firebaseapp.com
Anda juga dapat menggunakan template email kustom, jika aplikasi Anda memilikinya.
Mematuhi persyaratan data anonim Apple
Apple memberi pengguna opsi untuk menganonimkan data mereka, termasuk alamat email mereka. Apple menetapkan alamat email yang diacak dengan domain privaterelay.appleid.com kepada pengguna yang memilih opsi ini.
Aplikasi Anda harus mematuhi kebijakan atau persyaratan developer yang berlaku dari Apple terkait ID Apple anonim. Hal ini mencakup memperoleh persetujuan pengguna sebelum mengaitkan informasi identitas pribadi (PII) apa pun dengan ID Apple anonim. Tindakan yang melibatkan PII mencakup, tetapi tidak terbatas pada:
- Menautkan alamat email ke ID Apple anonim, atau sebaliknya.
- Menautkan nomor telepon ke ID Apple anonim, atau sebaliknya
- Menautkan kredensial sosial non-anonim, seperti Facebook atau Google, ke ID Apple anonim, atau sebaliknya.
Untuk mengetahui informasi selengkapnya, lihat Apple Developer Program License Agreement untuk akun developer Apple Anda.
Mengonfigurasi Apple sebagai penyedia
Untuk mengonfigurasi Apple sebagai penyedia identitas:
Buka halaman Penyedia Identitas di Google Cloud konsol.
Klik Tambahkan Penyedia.
Pilih Apple dari daftar.
Di bagian Platform, pilih Android.
Masukkan Services ID, Apple team ID, Key ID, dan Private key.
Daftarkan domain aplikasi Anda dengan mengklik Tambahkan domain di bagian Domain yang diizinkan. Untuk tujuan pengembangan,
localhostsudah diaktifkan secara default.Di bagian Configure your application, klik Android. Salin cuplikan ke dalam kode aplikasi Anda untuk melakukan inisialisasi SDK klien Identity Platform.
Klik Simpan.
Memproses login pengguna dengan SDK klien
Buat instance objek penyedia
OAuthProvider, menggunakan IDapple.com:Java
OAuthProvider.Builder provider = OAuthProvider.newBuilder("apple.com");Kotlin
val provider = OAuthProvider.newBuilder("apple.com")Opsional: Tambahkan cakupan OAuth. Cakupan menentukan data yang Anda minta dari Apple. Data yang lebih sensitif mungkin memerlukan cakupan tertentu. Secara default, jika One account per email address diaktifkan, Identity Platform akan meminta cakupan
emaildanname.Java
List<String> scopes = new ArrayList<String>() { { add("email"); add("name"); } }; provider.setScopes(scopes);Kotlin
provider.setScopes(arrayOf("email", "name"))Opsional: Lokalitaskan alur autentikasi. Anda dapat menentukan bahasa, atau menggunakan bahasa default perangkat:
Java
// Localize the Apple authentication screen in French. provider.addCustomParameter("locale", "fr");Kotlin
// Localize the Apple authentication screen in French. provider.addCustomParameter("locale", "fr");Login pengguna dengan Identity Platform.
Periksa apakah respons sudah ada dengan memanggil
startActivityForSignInWithProvider():Java
mAuth = FirebaseAuth.getInstance(); Task<AuthResult> pending = mAuth.getPendingAuthResult(); if (pending != null) { pending.addOnSuccessListener(new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { Log.d(TAG, "checkPending:onSuccess:" + authResult); // Get the user profile with authResult.getUser() and // authResult.getAdditionalUserInfo(), and the ID // token from Apple with authResult.getCredential(). } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "checkPending:onFailure", e); } }); } else { Log.d(TAG, "pending: null"); }Kotlin
val pending = auth.pendingAuthResult if (pending != null) { pending.addOnSuccessListener { authResult -> Log.d(TAG, "checkPending:onSuccess:$authResult") // Get the user profile with authResult.getUser() and // authResult.getAdditionalUserInfo(), and the ID // token from Apple with authResult.getCredential(). }.addOnFailureListener { e -> Log.w(TAG, "checkPending:onFailure", e) } } else { Log.d(TAG, "pending: null") }Proses login menempatkan Aktivitas Anda di latar belakang, yang berarti sistem dapat mengklaimnya kembali selama alur autentikasi. Memeriksa apakah hasil sudah ada akan mencegah pengguna harus login dua kali.
Jika tidak ada hasil yang tertunda, panggil
startActivityForSignInWithProvider():Java
mAuth.startActivityForSignInWithProvider(this, provider.build()) .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // Sign-in successful! Log.d(TAG, "activitySignIn:onSuccess:" + authResult.getUser()); FirebaseUser user = authResult.getUser(); // ... } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "activitySignIn:onFailure", e); } });Kotlin
auth.startActivityForSignInWithProvider(this, provider.build()) .addOnSuccessListener { authResult -> // Sign-in successful! Log.d(TAG, "activitySignIn:onSuccess:${authResult.user}") val user = authResult.user // ... } .addOnFailureListener { e -> Log.w(TAG, "activitySignIn:onFailure", e) }
Tidak seperti banyak penyedia identitas lainnya, Apple tidak memberikan URL foto.
Jika pengguna memilih untuk tidak membagikan email asli mereka ke aplikasi Anda, Apple akan menyediakan alamat email unik untuk dibagikan oleh pengguna tersebut. Email ini memiliki format xyz@privaterelay.appleid.com. Jika Anda mengonfigurasi layanan relai email pribadi, Apple akan meneruskan email yang dikirim ke alamat anonim tersebut ke alamat email asli pengguna.
Apple hanya membagikan informasi pengguna, seperti nama tampilan, ke aplikasi saat pengguna login untuk pertama kalinya. Dalam sebagian besar kasus, Identity Platform menyimpan data ini, yang memungkinkan Anda mengambilnya menggunakan firebase.auth().currentUser.displayName selama sesi mendatang. Namun, jika Anda mengizinkan pengguna untuk login ke aplikasi menggunakan Apple sebelum berintegrasi dengan Identity Platform, informasi pengguna tidak akan tersedia.
Langkah berikutnya
- Pelajari pengguna Identity Platform lebih lanjut.
- Login pengguna dengan penyedia identitas lainnya.