Buka konsol

Melakukan Autentikasi Menggunakan Twitter di JavaScripr

Anda dapat mengizinkan pengguna melakukan autentikasi dengan Firebase melalui akun Twitter mereka. Caranya, integrasikan autentikasi Twitter ke dalam aplikasi Anda. Anda dapat mengintegrasikan autentikasi Twitter menggunakan Firebase SDK untuk melakukan alur login, atau dengan melakukan alur OAuth Twitter secara manual dan meneruskan token akses dan rahasia yang dihasilkan ke Firebase.

Sebelum Anda memulai

  1. Tambahkan Firebase ke project JavaScript.
  2. Di Firebase console, buka bagian Auth.
  3. Pada tab Metode login, aktifkan penyedia Twitter.
  4. Tambahkan kunci API dan rahasia API dari konsol developer penyedia tersebut ke konfigurasi penyedia:
    1. Daftarkan aplikasi Anda sebagai aplikasi developer di Twitter, lalu dapatkan Kunci API dan Rahasia API OAuth aplikasi Anda.
    2. 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 Twitter.
  5. Klik Simpan.

Memproses alur login dengan Firebase SDK

Jika Anda sedang membuat aplikasi web, cara termudah untuk mengautentikasi pengguna dengan Firebase menggunakan akun Twitter mereka adalah dengan menangani alur login menggunakan Firebase JavaScript SDK. (Jika ingin mengautentikasi pengguna dalam Node.js atau lingkungan non-browser lain, Anda harus menangani alur login secara manual.)

Untuk menangani alur login dengan Firebase JavaScript SDK, ikuti langkah berikut ini:

  1. Buat instance objek penyedia Twitter:
    var provider = new firebase.auth.TwitterAuthProvider();
  2. Opsional: Untuk melokalkan alur OAuth penyedia ke bahasa yang dipilih pengguna tanpa meneruskan parameter OAuth khusus yang relevan secara eksplisit, update kode bahasa di instance Auth sebelum memulai alur OAuth. Misalnya:
    firebase.auth().languageCode = 'pt';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
    
  3. Opsional: Tentukan parameter penyedia OAuth kustom tambahan yang akan dikirim dengan permintaan OAuth. Untuk menambahkan parameter kustom, panggil setCustomParameters di penyedia yang diinisialisasi beserta objek yang berisi kunci, seperti yang ditentukan dalam dokumentasi penyedia OAuth dan nilainya yang terkait. Misalnya:
    provider.setCustomParameters({
      'lang': 'es'
    });
    
    Parameter OAuth yang mengharuskan cadangan tidak boleh digunakan dan akan diabaikan. Lihat referensi penyedia autentikasi untuk mengetahui detail lebih lanjut.
  4. Autentikasi dengan Firebase menggunakan objek penyedia Twitter. Anda bisa meminta pengguna untuk login dengan akun Twitter mereka, baik dengan membuka jendela pop-up maupun mengalihkan ke halaman login. Untuk perangkat seluler, sebaiknya gunakan metode pengalihan.
    • Untuk login dengan jendela pop-up, panggil signInWithPopup:
      firebase.auth().signInWithPopup(provider).then(function(result) {
        // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
        // You can use these server side with your app's credentials to access the Twitter API.
        var token = result.credential.accessToken;
        var secret = result.credential.secret;
        // The signed-in user info.
        var user = result.user;
        // ...
      }).catch(function(error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
        // ...
      });
      Perlu diingat juga bahwa Anda bisa mengambil token OAuth penyedia Twitter yang dapat digunakan untuk mengambil data tambahan menggunakan API Twitter.

      Di sini juga Anda dapat menemukan dan menangani error. Untuk mengetahui daftar kode error, baca Dokumen Referensi Auth.

    • Untuk login dengan beralih ke halaman login, panggil signInWithRedirect:
      firebase.auth().signInWithRedirect(provider);
      Kemudian, Anda juga bisa mengambil token OAuth penyedia Twitter dengan memanggil getRedirectResult saat halaman dimuat:
      firebase.auth().getRedirectResult().then(function(result) {
        if (result.credential) {
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          var token = result.credential.accessToken;
          var secret = result.credential.secret;
          // ...
        }
        // The signed-in user info.
        var user = result.user;
      }).catch(function(error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
        // ...
      });
      Di sini juga Anda dapat menemukan dan menangani error. Untuk mengetahui daftar kode error, baca Dokumen Referensi Auth.

Menangani alur proses login secara manual

Anda juga bisa melakukan autentikasi dengan Firebase menggunakan akun Twitter. Caranya, tangani alur login dengan memanggil endpoint OAuth Twitter:

  1. Integrasikan autentikasi Twitter ke dalam aplikasi dengan mengikuti dokumentasi developer. Pada akhir alur login Twitter, Anda akan menerima token akses OAuth dan rahasia OAuth.
  2. Jika Anda harus login ke aplikasi Node.js, kirim token akses OAuth dan rahasia OAuth ke aplikasi Node.js.
  3. Setelah pengguna berhasil login dengan Twitter, tukar token akses OAuth dan rahasia OAuth untuk mendapatkan kredensial Firebase:
    var credential = firebase.auth.TwitterAuthProvider.credential(token, secret);
    
  4. Autentikasi dengan Firebase menggunakan kredensial Firebase:
    firebase.auth().signInWithCredential(credential).catch(function(error) {
      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
      // The email of the user's account used.
      var email = error.email;
      // The firebase.auth.AuthCredential type that was used.
      var credential = error.credential;
      // ...
    });

Melakukan Autentikasi dengan Firebase di ekstensi Chrome

Jika Anda membuat aplikasi ekstensi Chrome, Anda harus memberi akses untuk ID ekstensi Chrome:

  1. Buka project Anda di Firebase console.
  2. Di bagian Authentication, buka halaman Metode login.
  3. Tambahkan URI seperti berikut ke daftar Domain yang Diotorisasi:
    chrome-extension://CHROME_EXTENSION_ID

Hanya operasi pop-up (signInWithPopup dan linkWithPopup) yang tersedia untuk ekstensi Chrome karena ekstensi Chrome tidak dapat menggunakan pengalihan HTTP. Anda harus memanggil metode ini dari skrip background, bukan dari pop-up tindakan browser karena pop-up autentikasi akan membatalkan pop-up tindakan browser.

Dalam file manifes ekstensi Chrome, pastikan Anda sudah menambahkan URL https://apis.google.com ke content_security_policy yang diizinkan.

Langkah berikutnya

Setelah pengguna login untuk pertama kalinya, akun pengguna baru akan dibuat dan ditautkan 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.

  • Di aplikasi Anda, cara yang direkomendasikan untuk mengetahui status autentikasi pengguna adalah dengan menyetel observer pada objek Auth. Selanjutnya, Anda dapat memperoleh informasi profil dasar pengguna dari objek User. Lihat Mengelola Pengguna.

  • Dalam 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 apa saja 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:

firebase.auth().signOut().then(function() {
  // Sign-out successful.
}).catch(function(error) {
  // An error happened.
});