Melakukan Autentikasi Menggunakan GitHub di Android

Anda dapat mengizinkan pengguna untuk melakukan autentikasi dengan Firebase menggunakan akun GitHub mereka. Hal tersebut dapat dilakukan dengan mengintegrasikan autentikasi GitHub ke dalam aplikasi Anda.

Sebelum memulai

  1. Tambahkan Firebase ke project Android.
  2. Jika Anda belum menghubungkan aplikasi dengan project Firebase, lakukanlah dari Firebase console.
  3. Tambahkan dependensi untuk Firebase Authentication ke file build.gradle tingkat aplikasi:
    implementation 'com.google.firebase:firebase-auth:16.0.3'
  4. Daftarkan aplikasi Anda sebagai aplikasi developer di GitHub, lalu dapatkan ID Klien dan Rahasia Klien OAuth 2.0 untuk aplikasi Anda.
  5. Aktifkan autentikasi GitHub:
    1. Di Firebase console, buka bagian Auth.
    2. Pada tab Metode login, aktifkan metode login GitHub serta tentukan Client ID dan Client Secret OAuth 2.0 yang didapat dari GitHub.
    3. Kemudian, pastikan URI pengalihan OAuth Firebase Anda (misalnya, my-app-12345.firebaseapp.com/__/auth/handler) ditetapkan sebagai URL callback Otorisasi di halaman setelan aplikasi pada konfigurasi aplikasi GitHub Anda.

Melakukan autentikasi dengan Firebase

  1. Integrasikan autentikasi GitHub ke dalam aplikasi dengan mengikuti dokumentasi developer. Gunakan alur proses aplikasi web, dan siapkan filter intent dalam aplikasi Anda untuk menangani callback OAuth 2.0 dari GitHub. Pada akhir alur login GitHub, Anda akan menerima token akses OAuth 2.0.
  2. Di metode onCreate aktivitas login Anda, dapatkan instance bersama dari objek FirebaseAuth:
    private FirebaseAuth mAuth;
    // ...
    mAuth = FirebaseAuth.getInstance();
    
  3. 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);
    }
    
  4. Setelah pengguna berhasil login dengan GitHub, tukarkan token akses OAuth 2.0 dengan kredensial Firebase, dan autentikasi dengan Firebase menggunakan kredensial Firebase:
    String token = "<GITHUB-ACCESS-TOKEN>";
    AuthCredential credential = GithubAuthProvider.getCredential(token);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
    
                    // If sign in fails, display a message to the user. If sign in succeeds
                    // the auth state listener will be notified and logic to handle the
                    // signed in user can be handled in the listener.
                    if (!task.isSuccessful()) {
                        Log.w(TAG, "signInWithCredential", task.getException());
                        Toast.makeText(MainActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                    }
    
                    // ...
                }
            });
    
    Jika panggilan untuk signInWithCredential berhasil, 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.