Melakukan Autentikasi dengan Firebase pada Android Menggunakan Sistem Autentikasi Kustom

Anda dapat mengintegrasikan Firebase Authentication dengan sistem autentikasi khusus, dengan cara memodifikasi server autentikasi untuk menghasilkan token bertanda khusus ketika pengguna berhasil login. Aplikasi Anda menerima token ini dan menggunakannya untuk mengautentikasi dengan Firebase.

Sebelum memulai

  1. Tambahkan Firebase ke project Android Anda.
  2. Tambahkan dependensi untuk Firebase Authentication ke file build.gradle tingkat aplikasi:
    implementation 'com.google.firebase:firebase-auth:16.0.3'
  3. Dapatkan kunci server project Anda:
    1. Buka halaman Akun Layanan pada setelan project.
    2. Klik Buat Kunci Pribadi Baru di bagian bawah Firebase Admin SDK pada halaman Akun Layanan.
    3. Pasangan kunci umum/pribadi pada akun layanan baru secara otomatis disimpan di komputer Anda. Salin file ini ke server autentikasi Anda.

Mengautentikasi dengan Firebase

  1. Di metode onCreate aktivitas login Anda, dapatkan instance bersama dari objek FirebaseAuth:
    private FirebaseAuth mAuth;
    // ...
    mAuth = FirebaseAuth.getInstance();
    
  2. Saat menginisialisasi Aktivitas Anda, periksa apakah pengguna saat ini sedang login:
    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }
    
  3. Ketika pengguna login ke aplikasi Anda, kirimkan kredensial login mereka (misalnya, nama pengguna dan sandi) ke server autentikasi. Server Anda akan memeriksa kredensial dan menampilkan token khusus jika kredensial tersebut valid.
  4. Setelah Anda menerima token khusus dari server autentikasi, teruskan token tersebut ke signInWithCustomToken agar pengguna dapat login:
    mAuth.signInWithCustomToken(mCustomToken)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCustomToken:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCustomToken:failure", task.getException());
                        Toast.makeText(CustomAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    
    Jika berhasil login, AuthStateListener Anda dapat menggunakan metode getCurrentUser untuk mendapatkan data akun pengguna.

Langkah berikutnya

Setelah pengguna login untuk pertama kalinya, akun pengguna baru akan dibuat dan dihubungkan ke kredensial—yaitu, nama pengguna dan sandi, nomor telepon, atau informasi penyedia autentikasi—yang digunakan pengguna tersebut untuk login. Akun baru ini disimpan sebagai bagian dari project Firebase Anda dan dapat digunakan untuk mengidentifikasi pengguna di setiap aplikasi dalam project Anda, terlepas dari cara pengguna login.

  • Pada aplikasi, Anda bisa memperoleh informasi profil dasar pengguna dari objek FirebaseUser . Lihat Mengelola Pengguna.

  • Pada Aturan Keamanan Firebase Realtime Database dan Cloud Storage, Anda dapat memperoleh ID unik milik pengguna yang login dari variabel auth dan menggunakannya untuk mengontrol data yang dapat diakses pengguna.

Anda dapat mengizinkan pengguna untuk login ke aplikasi Anda menggunakan beberapa penyedia autentikasi dengan menautkan kredensial penyedia autentikasi ke akun pengguna yang ada.

Agar pengguna logout, panggil signOut:

FirebaseAuth.getInstance().signOut();

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.