Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Kelola Pengguna di Firebase

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

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