Buat pengguna
Anda membuat pengguna baru di proyek Firebase dengan memanggil metode createUserWithEmailAndPassword
atau dengan memasukkan pengguna untuk pertama kali menggunakan penyedia identitas federasi, seperti Google Sign-In atau Facebook Login .
Anda juga dapat membuat pengguna baru yang diautentikasi dengan kata sandi dari bagian Otentikasi di konsol Firebase , di halaman Pengguna.
Dapatkan pengguna yang saat ini masuk
Cara yang disarankan untuk mendapatkan pengguna saat ini adalah dengan memanggil metode getCurrentUser
. Jika tidak ada pengguna yang masuk, getCurrentUser
mengembalikan null:
Kotlin+KTX
val user = Firebase.auth.currentUser if (user != null) { // User is signed in } else { // No user is signed in }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { // User is signed in } else { // No user is signed in }
Ada beberapa kasus di mana getCurrentUser
akan mengembalikan FirebaseUser
non-null tetapi token yang mendasarinya tidak valid. Ini dapat terjadi, misalnya, jika pengguna dihapus di perangkat lain dan token lokal belum disegarkan. Dalam hal ini, Anda mungkin mendapatkan pengguna yang valid getCurrentUser
tetapi panggilan selanjutnya ke sumber daya yang diautentikasi akan gagal.
getCurrentUser
mungkin juga mengembalikan null
karena objek auth belum selesai diinisialisasi.
Jika Anda melampirkan AuthStateListener, Anda akan mendapatkan panggilan balik setiap kali status token yang mendasarinya berubah. Ini dapat berguna untuk bereaksi terhadap kasus tepi seperti yang disebutkan di atas.
Dapatkan profil pengguna
Untuk mendapatkan informasi profil pengguna, gunakan metode accessor dari instance FirebaseUser
. Sebagai contoh:
Kotlin+KTX
val user = Firebase.auth.currentUser user?.let { // Name, email address, and profile photo Url val name = it.displayName val email = it.email val photoUrl = it.photoUrl // Check if user's email is verified val emailVerified = it.isEmailVerified // The user's ID, unique to the Firebase project. Do NOT use this value to // authenticate with your backend server, if you have one. Use // FirebaseUser.getIdToken() instead. val uid = it.uid }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { // Name, email address, and profile photo Url String name = user.getDisplayName(); String email = user.getEmail(); Uri photoUrl = user.getPhotoUrl(); // Check if user's email is verified boolean emailVerified = user.isEmailVerified(); // The user's ID, unique to the Firebase project. Do NOT use this value to // authenticate with your backend server, if you have one. Use // FirebaseUser.getIdToken() instead. String uid = user.getUid(); }
Dapatkan informasi profil khusus penyedia pengguna
Untuk mendapatkan informasi profil yang diambil dari penyedia masuk yang ditautkan ke pengguna, gunakan metode getProviderData
. Sebagai contoh:
Kotlin+KTX
val user = Firebase.auth.currentUser user?.let { for (profile in it.providerData) { // Id of the provider (ex: google.com) val providerId = profile.providerId // UID specific to the provider val uid = profile.uid // Name, email address, and profile photo Url val name = profile.displayName val email = profile.email val photoUrl = profile.photoUrl } }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { for (UserInfo profile : user.getProviderData()) { // Id of the provider (ex: google.com) String providerId = profile.getProviderId(); // UID specific to the provider String uid = profile.getUid(); // Name, email address, and profile photo Url String name = profile.getDisplayName(); String email = profile.getEmail(); Uri photoUrl = profile.getPhotoUrl(); } }
Perbarui profil pengguna
Anda dapat memperbarui informasi profil dasar pengguna—nama tampilan dan URL foto profil pengguna—dengan metode updateProfile
. Sebagai contoh:
Kotlin+KTX
val user = Firebase.auth.currentUser val profileUpdates = userProfileChangeRequest { displayName = "Jane Q. User" photoUri = Uri.parse("https://example.com/jane-q-user/profile.jpg") } user!!.updateProfile(profileUpdates) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "User profile updated.") } }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder() .setDisplayName("Jane Q. User") .setPhotoUri(Uri.parse("https://example.com/jane-q-user/profile.jpg")) .build(); user.updateProfile(profileUpdates) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "User profile updated."); } } });
Tetapkan alamat email pengguna
Anda dapat menetapkan alamat email pengguna dengan metode updateEmail
. Sebagai contoh:
Kotlin+KTX
val user = Firebase.auth.currentUser user!!.updateEmail("user@example.com") .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "User email address updated.") } }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); user.updateEmail("user@example.com") .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "User email address updated."); } } });
Kirim email verifikasi kepada pengguna
Anda dapat mengirim email verifikasi alamat ke pengguna dengan metode sendEmailVerification
. Sebagai contoh:
Kotlin+KTX
val user = Firebase.auth.currentUser user!!.sendEmailVerification() .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); user.sendEmailVerification() .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
Anda dapat menyesuaikan template email yang digunakan di bagian Authentication pada Firebase console , di halaman Template Email. Lihat Template Email di Pusat Bantuan Firebase.
Dimungkinkan juga untuk meneruskan status melalui URL lanjutan untuk mengarahkan kembali ke aplikasi saat mengirim email verifikasi.
Selain itu, Anda dapat melokalkan email verifikasi dengan memperbarui kode bahasa pada instance Auth sebelum mengirim email. Sebagai contoh:
Kotlin+KTX
auth.setLanguageCode("fr") // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage()
Java
auth.setLanguageCode("fr"); // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage();
Tetapkan kata sandi pengguna
Anda dapat mengatur kata sandi pengguna dengan metode updatePassword
. Sebagai contoh:
Kotlin+KTX
val user = Firebase.auth.currentUser val newPassword = "SOME-SECURE-PASSWORD" user!!.updatePassword(newPassword) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "User password updated.") } }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); String newPassword = "SOME-SECURE-PASSWORD"; user.updatePassword(newPassword) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "User password updated."); } } });
Kirim email setel ulang kata sandi
Anda dapat mengirim email pengaturan ulang kata sandi ke pengguna dengan metode sendPasswordResetEmail
. Sebagai contoh:
Kotlin+KTX
val emailAddress = "user@example.com" Firebase.auth.sendPasswordResetEmail(emailAddress) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); String emailAddress = "user@example.com"; auth.sendPasswordResetEmail(emailAddress) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
Anda dapat menyesuaikan template email yang digunakan di bagian Authentication pada Firebase console , di halaman Template Email. Lihat Template Email di Pusat Bantuan Firebase.
Dimungkinkan juga untuk meneruskan status melalui URL lanjutan untuk mengarahkan kembali ke aplikasi saat mengirim email setel ulang kata sandi.
Selain itu, Anda dapat melokalkan email setel ulang sandi dengan memperbarui kode bahasa pada instans Auth sebelum mengirim email. Sebagai contoh:
Kotlin+KTX
auth.setLanguageCode("fr") // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage()
Java
auth.setLanguageCode("fr"); // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage();
Anda juga dapat mengirim email setel ulang sandi dari konsol Firebase.
Hapus pengguna
Anda dapat menghapus akun pengguna dengan metode delete
. Sebagai contoh:
Kotlin+KTX
val user = Firebase.auth.currentUser!! user.delete() .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "User account deleted.") } }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); user.delete() .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "User account deleted."); } } });
Anda juga dapat menghapus pengguna dari bagian Otentikasi di konsol Firebase , di halaman Pengguna.
Autentikasi ulang pengguna
Beberapa tindakan peka keamanan—seperti menghapus akun , menyetel alamat email utama , dan mengubah sandi —mengharuskan pengguna baru saja masuk. Jika Anda melakukan salah satu dari tindakan ini, dan pengguna masuk terlalu lama, tindakan gagal dan melontarkan FirebaseAuthRecentLoginRequiredException
. Jika ini terjadi, autentikasi ulang pengguna dengan mendapatkan kredensial masuk baru dari pengguna dan meneruskan kredensial ke reauthenticate
. Sebagai contoh:
Kotlin+KTX
val user = Firebase.auth.currentUser!! // Get auth credentials from the user for re-authentication. The example below shows // email and password credentials but there are multiple possible providers, // such as GoogleAuthProvider or FacebookAuthProvider. val credential = EmailAuthProvider .getCredential("user@example.com", "password1234") // Prompt the user to re-provide their sign-in credentials user.reauthenticate(credential) .addOnCompleteListener { Log.d(TAG, "User re-authenticated.") }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); // Get auth credentials from the user for re-authentication. The example below shows // email and password credentials but there are multiple possible providers, // such as GoogleAuthProvider or FacebookAuthProvider. AuthCredential credential = EmailAuthProvider .getCredential("user@example.com", "password1234"); // Prompt the user to re-provide their sign-in credentials user.reauthenticate(credential) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { Log.d(TAG, "User re-authenticated."); } });
Impor akun pengguna
Anda dapat mengimpor akun pengguna dari file ke proyek Firebase menggunakan perintah auth:import
Firebase CLI. Sebagai contoh:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14