Facebook masuk atau daftar penelusuran google

  • Produk
  • Kasus Penggunaan
  • Harga
  • Dokumen
    • Ringkasan
    • Dasar-dasar
    • Build
    • Rilis & Pantau
    • Engage
    • Referensi
    • Sampel
  • Komunitas
  • Dukungan
  • Buka konsol

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

Anda dapat mengizinkan pengguna melakukan autentikasi dengan Firebase menggunakan akun Facebook-nya dengan mengintegrasikan Login dengan Facebook ke aplikasi. Integrasi ini dapat dilakukan menggunakan Firebase SDK untuk menjalankan alur login, atau menerapkan alur Login dengan Facebook secara manual dan meneruskan token akses yang dihasilkan ke Firebase.

Sebelum memulai

  1. Tambahkan Firebase ke project JavaScript.
  2. Di situs Facebook for Developers, dapatkan App ID dan App Secret untuk aplikasi Anda.
  3. Aktifkan Login dengan Facebook:
    1. Di Firebase console, buka bagian Auth.
    2. Pada tab Sign in method, aktifkan metode login dengan Facebook, lalu masukkan App ID dan App Secret yang Anda dapatkan dari Facebook.
    3. Kemudian, pastikan OAuth redirect URI Anda (misalnya my-app-12345.firebaseapp.com/__/auth/handler), terdaftar sebagai salah satu dari OAuth redirect URIs di halaman setelan aplikasi Facebook di situs Facebook for Developers, di konfigurasi Product Settings > Facebook Login.

Menangani alur login dengan Firebase SDK

Jika Anda mem-build aplikasi web, cara termudah untuk mengautentikasi pengguna dengan Firebase menggunakan akun Facebook-nya adalah dengan menangani alur login dengan 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-langkah berikut:

  1. Buat instance objek penyedia Facebook:

    Web version 9

    import { FacebookAuthProvider } from "firebase/auth";
    
    const provider = new FacebookAuthProvider();

    Web version 8

    var provider = new firebase.auth.FacebookAuthProvider();

  2. Opsional: Tentukan cakupan OAuth 2.0 tambahan yang ingin diminta dari penyedia autentikasi. Untuk menambahkan cakupan, panggil addScope. Contoh:

    Web version 9

    provider.addScope('user_birthday');

    Web version 8

    provider.addScope('user_birthday');

    Lihat dokumentasi penyedia autentikasi.
  3. Opsional: Untuk melokalkan alur OAuth penyedia ke bahasa yang dipilih pengguna tanpa secara eksplisit meneruskan parameter OAuth kustom yang relevan, ubah kode bahasa di instance Auth sebelum memulai alur OAuth. Contoh:

    Web version 9

    import { getAuth } from "firebase/auth";
    
    const auth = getAuth();
    auth.languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();

    Web version 8

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();

  4. 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 berisi kunci, seperti yang ditentukan dalam dokumentasi penyedia OAuth dan nilainya yang terkait. Sebagai contoh:

    Web version 9

    provider.setCustomParameters({
      'display': 'popup'
    });

    Web version 8

    provider.setCustomParameters({
      'display': 'popup'
    });

    Parameter OAuth wajib yang dicadangkan tidak boleh digunakan dan akan diabaikan. Baca referensi penyedia autentikasi untuk mengetahui detail lebih lanjut.
  5. Lakukan autentikasi dengan Firebase menggunakan objek penyedia Facebook. Anda dapat meminta pengguna untuk login dengan akun Facebook, baik dengan menampilkan jendela pop-up maupun dengan mengalihkannya ke halaman login. Untuk perangkat seluler, sebaiknya gunakan metode pengalihan.
    • Untuk login dengan jendela pop-up, panggil signInWithPopup:

      Web version 9

      import { getAuth, signInWithPopup, FacebookAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // The signed-in user info.
          const user = result.user;
      
          // This gives you a Facebook Access Token. You can use it to access the Facebook API.
          const credential = FacebookAuthProvider.credentialFromResult(result);
          const accessToken = credential.accessToken;
      
          // ...
        })
        .catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.customData.email;
          // The AuthCredential type that was used.
          const credential = FacebookAuthProvider.credentialFromError(error);
      
          // ...
        });

      Web version 8

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // The signed-in user info.
          var user = result.user;
      
          // This gives you a Facebook Access Token. You can use it to access the Facebook API.
          var accessToken = credential.accessToken;
      
          // ...
        })
        .catch((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 diperhatikan juga bahwa Anda dapat mengambil token OAuth penyedia Facebook yang dapat digunakan untuk mengambil data tambahan menggunakan Facebook API.

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

    • Untuk login dengan beralih ke halaman login, panggil signInWithRedirect:

      Web version 9

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);

      Web version 8

      firebase.auth().signInWithRedirect(provider);

      Selanjutnya, Anda juga bisa mengambil token OAuth penyedia Facebook dengan memanggil getRedirectResult saat halaman dimuat:

      Web version 9

      import { getAuth, getRedirectResult, FacebookAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          // This gives you a Facebook Access Token. You can use it to access the Facebook API.
          const credential = FacebookAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
      
          const user = result.user;
        }).catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.customData.email;
          // AuthCredential type that was used.
          const credential = FacebookAuthProvider.credentialFromError(error);
          // ...
        });

      Web version 8

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a Facebook Access Token. You can use it to access the Facebook API.
            var token = credential.accessToken;
            // ...
          }
          // The signed-in user info.
          var user = result.user;
        }).catch((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 Dokumentasi Referensi Auth.

Menangani Error account-exists-with-different-credential

Jika Anda mengaktifkan setelan One account per email address di Firebase console, saat pengguna mencoba login ke penyedia (seperti Facebook) dengan email yang sudah ada untuk penyedia pengguna Firebase lain (seperti Google), error auth/account-exists-with-different-credential akan dilemparkan beserta objek AuthCredential (token akses Facebook). Untuk menyelesaikan proses login ke penyedia yang dimaksud, pengguna harus login terlebih dahulu ke penyedia saat ini (Google) lalu menghubungkan akunnya ke AuthCredential sebelumnya (token akses Facebook).

Jika menggunakan signInWithPopup, Anda dapat menangani error auth/account-exists-with-different-credential dengan kode seperti pada contoh berikut:

// Step 1.
// User tries to sign in to Facebook.
auth.signInWithPopup(new firebase.auth.FacebookAuthProvider()).catch(function(error) {
  // An error happened.
  if (error.code === 'auth/account-exists-with-different-credential') {
    // Step 2.
    // User's email already exists.
    // The pending Facebook credential.
    var pendingCred = error.credential;
    // The provider account's email address.
    var email = error.email;
    // Get sign-in methods for this email.
    auth.fetchSignInMethodsForEmail(email).then(function(methods) {
      // Step 3.
      // If the user has several sign-in methods,
      // the first method in the list will be the "recommended" method to use.
      if (methods[0] === 'password') {
        // Asks the user their password.
        // In real scenario, you should handle this asynchronously.
        var password = promptUserForPassword(); // TODO: implement promptUserForPassword.
        auth.signInWithEmailAndPassword(email, password).then(function(result) {
          // Step 4a.
          return result.user.linkWithCredential(pendingCred);
        }).then(function() {
          // Facebook account successfully linked to the existing Firebase user.
          goToApp();
        });
        return;
      }
      // All the other cases are external providers.
      // Construct provider object for that provider.
      // TODO: implement getProviderForProviderId.
      var provider = getProviderForProviderId(methods[0]);
      // At this point, you should let the user know that they already have an account
      // but with a different provider, and let them validate the fact they want to
      // sign in with this provider.
      // Sign in to provider. Note: browsers usually block popup triggered asynchronously,
      // so in real scenario you should ask the user to click on a "continue" button
      // that will trigger the signInWithPopup.
      auth.signInWithPopup(provider).then(function(result) {
        // Remember that the user may have signed in with an account that has a different email
        // address than the first one. This can happen as Firebase doesn't control the provider's
        // sign in flow and the user is free to login using whichever account they own.
        // Step 4b.
        // Link to Facebook credential.
        // As we have access to the pending credential, we can directly call the link method.
        result.user.linkAndRetrieveDataWithCredential(pendingCred).then(function(usercred) {
          // Facebook account successfully linked to the existing Firebase user.
          goToApp();
        });
      });
    });
  }
});

Mode pengalihan

Error ini ditangani dengan cara yang mirip di mode pengalihan, tetapi perbedaannya, kredensial yang tertunda harus di-cache di antara pengalihan halaman (misalnya, menggunakan penyimpanan sesi).

Lanjutan: Menangani alur login secara manual

Anda juga dapat melakukan autentikasi dengan Firebase menggunakan akun Facebook, dengan cara menangani alur login dengan Facebook Login JavaScript SDK:

  1. Integrasikan Login dengan Facebook ke dalam aplikasi Anda dengan mengikuti dokumentasi developer. Pastikan untuk mengonfigurasi Login dengan Facebook dengan ID aplikasi Facebook Anda:
    <script src="//connect.facebook.net/en_US/sdk.js"></script>
    <script>
      FB.init({
        /**********************************************************************
         * TODO(Developer): Change the value below with your Facebook app ID. *
         **********************************************************************/
        appId      : '<YOUR_FACEBOOK_APP_ID>',
        status     : true,
        xfbml      : true,
        version    : 'v2.6'
      });
    </script>
    
  2. Kami juga menyiapkan pemroses di status autentikasi Facebook:
    FB.Event.subscribe('auth.authResponseChange', checkLoginState);
    
  3. Setelah mengintegrasikan Login dengan Facebook, tambahkan tombol Login dengan Facebook pada halaman web Anda:
    <fb:login-button data-auto-logout-link="true" scope="public_profile,email" size="large"></fb:login-button>
    
  4. Dalam callback status autentikasi Facebook, tukar token autentikasi dari respons autentikasi Facebook dengan kredensial Firebase lalu login ke Firebase:

    Web version 9

    import { getAuth, onAuthStateChanged, signInWithCredential, signOut, FacebookAuthProvider } from "firebase/auth";
    const auth = getAuth();
    
    function checkLoginState(response) {
      if (response.authResponse) {
        // User is signed-in Facebook.
        const unsubscribe = onAuthStateChanged(auth, (firebaseUser) => {
          unsubscribe();
          // Check if we are already signed-in Firebase with the correct user.
          if (!isUserEqual(response.authResponse, firebaseUser)) {
            // Build Firebase credential with the Facebook auth token.
            const credential = FacebookAuthProvider.credential(
                response.authResponse.accessToken);
    
            // Sign in with the credential from the Facebook user.
            signInWithCredential(auth, credential)
              .catch((error) => {
                // Handle Errors here.
                const errorCode = error.code;
                const errorMessage = error.message;
                // The email of the user's account used.
                const email = error.customData.email;
                // The AuthCredential type that was used.
                const credential = FacebookAuthProvider.credentialFromError(error);
                // ...
              });
          } else {
            // User is already signed-in Firebase with the correct user.
          }
        });
      } else {
        // User is signed-out of Facebook.
        signOut(auth);
      }
    }

    Web version 8

    function checkLoginState(response) {
      if (response.authResponse) {
        // User is signed-in Facebook.
        var unsubscribe = firebase.auth().onAuthStateChanged((firebaseUser) => {
          unsubscribe();
          // Check if we are already signed-in Firebase with the correct user.
          if (!isUserEqual(response.authResponse, firebaseUser)) {
            // Build Firebase credential with the Facebook auth token.
            var credential = firebase.auth.FacebookAuthProvider.credential(
                response.authResponse.accessToken);
    
            // Sign in with the credential from the Facebook user.
            firebase.auth().signInWithCredential(credential)
              .catch((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;
                // ...
              });
          } else {
            // User is already signed-in Firebase with the correct user.
          }
        });
      } else {
        // User is signed-out of Facebook.
        firebase.auth().signOut();
      }
    }

    Di sini juga Anda dapat menemukan dan menangani error. Untuk mengetahui daftar kode error, baca Dokumentasi Referensi Auth.
  5. Anda juga harus memeriksa bahwa pengguna Facebook belum login ke Firebase untuk menghindari autentikasi ulang yang tidak diperlukan:

    Web version 9

    import { FacebookAuthProvider } from "firebase/auth";
    
    function isUserEqual(facebookAuthResponse, firebaseUser) {
      if (firebaseUser) {
        const providerData = firebaseUser.providerData;
        for (let i = 0; i < providerData.length; i++) {
          if (providerData[i].providerId === FacebookAuthProvider.PROVIDER_ID &&
              providerData[i].uid === facebookAuthResponse.userID) {
            // We don't need to re-auth the Firebase connection.
            return true;
          }
        }
      }
      return false;
    }

    Web version 8

    function isUserEqual(facebookAuthResponse, firebaseUser) {
      if (firebaseUser) {
        var providerData = firebaseUser.providerData;
        for (var i = 0; i < providerData.length; i++) {
          if (providerData[i].providerId === firebase.auth.FacebookAuthProvider.PROVIDER_ID &&
              providerData[i].uid === facebookAuthResponse.userID) {
            // We don't need to re-auth the Firebase connection.
            return true;
          }
        }
      }
      return false;
    }

Lanjutan: Autentikasi dengan Firebase di Node.js

Untuk melakukan autentikasi dengan Firebase pada aplikasi Node.js:

  1. Buat pengguna login dengan Akun Facebook-nya, lalu dapatkan token akses Facebook pengguna tersebut. Misalnya, proses login pengguna di browser sebagaimana dijelaskan di bagian Menangani alur login secara manual, tetapi kirim token akses ke aplikasi Node.js, dan bukan menggunakannya dalam aplikasi klien.
  2. Setelah mendapatkan token akses Facebook pengguna, gunakan token tersebut untuk mem-build objek Credential, lalu proses login pengguna dengan kredensial tersebut:

    Web version 9

    import { getAuth, signInWithCredential, FacebookAuthProvider } from "firebase/auth";
    
    // Sign in with the credential from the Facebook user.
    const auth = getAuth();
    signInWithCredential(auth, credential)
      .then((result) => {
        // Signed in
        const credential = FacebookAuthProvider.credentialFromResult(result);
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.customData.email;
        // The AuthCredential type that was used.
        const credential = FacebookAuthProvider.credentialFromError(error);
        // ...
      });

    Web version 8

    // Sign in with the credential from the Facebook user.
    firebase.auth().signInWithCredential(credential)
      .then((result) => {
        // Signed in
        var credential = result.credential;
        // ...
      })
      .catch((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;
        // ...
      });

Mengautentikasi dengan Firebase di ekstensi Chrome

Jika mem-build aplikasi ekstensi Chrome, Anda harus menambahkan ID ekstensi Chrome:

  1. Buka project Anda di Firebase console.
  2. Di bagian Authentication, buka halaman Sign-in method.
  3. Tambahkan URI seperti berikut ke daftar Authorized Domains:
    chrome-extension://CHROME_EXTENSION_ID

Hanya operasi pop-up (signInWithPopup, linkWithPopup, dan reauthenticateWithPopup) yang tersedia untuk ekstensi Chrome, karena ekstensi Chrome tidak dapat menggunakan pengalihan HTTP. Anda harus memanggil metode ini dari skrip halaman latar belakang, bukan dari pop-up tindakan browser, karena pop-up autentikasi akan membatalkan pop-up tindakan browser. Metode pop-up hanya dapat digunakan dalam ekstensi yang menggunakan Manifest V2. Manifest V3 yang lebih baru hanya mengizinkan skrip latar belakang dalam bentuk pekerja layanan, yang sama sekali tidak dapat menjalankan operasi pop-up.

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

Menyesuaikan domain pengalihan untuk login dengan Facebook

Saat pembuatan project, Firebase akan menyediakan subdomain unik untuk project Anda: https://my-app-12345.firebaseapp.com.

Domain ini juga akan digunakan sebagai mekanisme pengalihan untuk login dengan OAuth. Domain tersebut harus diizinkan untuk semua penyedia OAuth yang didukung. Namun, hal ini berarti pengguna mungkin akan melihat domain tersebut saat login ke Facebook sebelum dialihkan kembali ke aplikasi: Lanjutkan ke: https://my-app-12345.firebaseapp.com.

Agar subdomain tidak ditampilkan, Anda dapat menyiapkan domain kustom dengan Firebase Hosting:

  1. Ikuti langkah 1 sampai 3 seperti yang tertera di artikel Menyiapkan domain Anda untuk Hosting. Saat Anda memverifikasi kepemilikan domain, Hosting akan menyediakan sertifikat SSL untuk domain kustom Anda.
  2. Tambahkan domain kustom ke daftar domain yang diizinkan di Firebase console: auth.custom.domain.com.
  3. Pada konsol developer Facebook atau halaman penyiapan OAuth, berikan izin pada URL halaman pengalihan, yang akan dapat diakses di domain kustom Anda: https://auth.custom.domain.com/__/auth/handler.
  4. Saat menginisialisasi library JavaScript, tentukan domain kustom Anda dengan kolom authDomain:
    var config = {
      apiKey: '...',
      // Changed from 'my-app-12345.firebaseapp.com'.
      authDomain: 'auth.custom.domain.com',
      databaseURL: 'https://my-app-12345.firebaseio.com',
      projectId: 'my-app-12345',
      storageBucket: 'my-app-12345.appspot.com',
      messagingSenderId: '1234567890'
    };
    firebase.initializeApp(config);
    

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, terlepas dari cara pengguna login.

  • Di aplikasi Anda, cara yang direkomendasikan untuk mengetahui status autentikasi pengguna adalah dengan menetapkan observer pada objek Auth. Selanjutnya, Anda bisa mendapatkan informasi profil dasar pengguna dari objek User. Baca bagian Mengelola Pengguna.

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

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

Untuk memproses logout pengguna, panggil signOut:

Web version 9

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web version 8

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

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2022-08-11 UTC.

[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Informasi yang saya butuhkan tidak ada" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Terlalu rumit/langkahnya terlalu banyak" },{ "type": "thumb-down", "id": "outOfDate", "label":"Sudah usang" },{ "type": "thumb-down", "id": "translationIssue", "label":"Masalah terjemahan" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Masalah kode / contoh" },{ "type": "thumb-down", "id": "otherDown", "label":"Lainnya" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Mudah dipahami" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Memecahkan masalah saya" },{ "type": "thumb-up", "id": "otherUp", "label":"Lainnya" }]

Facebook itu apa sih?

Facebook adalah media sosial dan layanan jejaring sosial online Amerika yang dimiliki oleh Meta Platforms.

Bagaimana cara membuka akun Facebook yang tidak bisa dibuka?

Memulihkan akun Facebook jika Anda tidak bisa login..
Buka halaman Cari Akun Anda di facebook.com/login/identify dan ikuti petunjuknya. ... .
Cari akun yang ingin Anda pulihkan. ... .
Ikuti langkah-langkah di layar untuk mereset kata sandi akun Anda..

Bagaimana cara mengembalikan akun Facebook yang lama?

Bagaimana cara memulihkan akun Facebook lama yang tidak bisa diakses?.
Ketuk. dan masukkan nama profil..
Ketuk nama profil yang ingin Anda laporkan..
Ketuk , lalu ketuk Laporkan..
Ketuk Hal Lain..
Ketuk Pulihkan akun ini dan ikuti langkah-langkahnya..

Bagaimana cara masuk ke akun Facebook saya?

Login ke akun Facebook Anda.
Buka facebook.com. Klik Email atau Nomor Telepon dan masukkan salah satu opsi berikut: Email: Anda bisa login dengan email apa pun yang tercantum di akun Facebook Anda. ... .
Klik Kata sandi, lalu masukkan kata sandi Anda..
Klik Login..