Cara login fb lewat gmail

Anda dapat mengizinkan pengguna Anda mengautentikasi dengan Firebase menggunakan akun Facebook mereka dengan mengintegrasikan Facebook Login ke dalam aplikasi Anda. Anda dapat mengintegrasikan Facebook Login dengan menggunakan SDK Firebase untuk menjalankan alur masuk, atau dengan menjalankan alur Masuk Facebook secara manual dan meneruskan token akses yang dihasilkan ke Firebase.

Sebelum kamu memulai

  1. Tambahkan Firebase ke proyek JavaScript Anda .
  2. Di situs Facebook untuk Pengembang , dapatkan ID Aplikasi dan Rahasia Aplikasi untuk aplikasi Anda.
  3. Aktifkan Login Facebook:
    1. Di Firebase console , buka bagian Auth .
    2. Pada tab Metode masuk , aktifkan metode masuk Facebook dan tentukan ID Aplikasi dan Rahasia Aplikasi yang Anda dapatkan dari Facebook.
    3. Kemudian, pastikan URI pengalihan OAuth Anda (mis my-app-12345.firebaseapp.com/__/auth/handler ) terdaftar sebagai salah satu URI pengalihan OAuth Anda di halaman pengaturan aplikasi Facebook Anda di situs Facebook untuk Pengembang di Produk Pengaturan > Konfigurasi Login Facebook .

Tangani alur masuk dengan Firebase SDK

Jika Anda membuat aplikasi web, cara termudah untuk mengautentikasi pengguna Anda dengan Firebase menggunakan akun Facebook mereka adalah dengan menangani alur masuk dengan Firebase JavaScript SDK. (Jika Anda ingin mengautentikasi pengguna di Node.js atau lingkungan non-browser lainnya, Anda harus menangani alur masuk secara manual.)

Untuk menangani alur masuk 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 Anda minta dari penyedia autentikasi. Untuk menambahkan cakupan, panggil addScope . Sebagai contoh:

    Web version 9

    provider.addScope('user_birthday');

    Web version 8

    provider.addScope('user_birthday');

    Lihat dokumentasi penyedia otentikasi .
  3. Opsional : Untuk melokalkan aliran OAuth penyedia ke bahasa pilihan pengguna tanpa secara eksplisit meneruskan parameter OAuth kustom yang relevan, perbarui kode bahasa pada instance Auth sebelum memulai aliran OAuth. Sebagai 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 khusus tambahan yang ingin Anda kirim dengan permintaan OAuth. Untuk menambahkan parameter khusus, panggil setCustomParameters pada penyedia yang diinisialisasi dengan objek yang berisi kunci seperti yang ditentukan oleh dokumentasi penyedia OAuth dan nilai yang sesuai. Sebagai contoh:

    Web version 9

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

    Web version 8

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

    Parameter OAuth wajib yang dicadangkan tidak diizinkan dan akan diabaikan. Lihat referensi penyedia otentikasi untuk lebih jelasnya.
  5. Otentikasi dengan Firebase menggunakan objek penyedia Facebook. Anda dapat meminta pengguna Anda untuk masuk dengan akun Facebook mereka baik dengan membuka jendela pop-up atau dengan mengarahkan ulang ke halaman masuk. Metode pengalihan lebih disukai pada perangkat seluler.
    • Untuk masuk 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;
      
          // ...
        });

      Perhatikan juga bahwa Anda dapat mengambil token OAuth penyedia Facebook yang dapat digunakan untuk mengambil data tambahan menggunakan API Facebook.

      Ini juga tempat Anda dapat menangkap dan menangani kesalahan. Untuk daftar kode kesalahan, lihat Dokumen Referensi Auth .

    • Untuk masuk dengan mengalihkan ke halaman masuk, panggil signInWithRedirect :

      Web version 9

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

      Web version 8

      firebase.auth().signInWithRedirect(provider);

      Kemudian, Anda juga dapat mengambil token OAuth penyedia Facebook dengan memanggil getRedirectResult saat halaman Anda 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;
          // ...
        });

      Ini juga tempat Anda dapat menangkap dan menangani kesalahan. Untuk daftar kode kesalahan, lihat Dokumen Referensi Auth .

Menangani Kesalahan akun-ada-dengan-berbeda-kredensial

Jika Anda mengaktifkan setelan Satu akun per alamat email di Firebase console , saat pengguna mencoba masuk ke penyedia (seperti Facebook) dengan email yang sudah ada untuk penyedia pengguna Firebase lain (seperti Google), kesalahannya auth/account-exists-with-different-credential dilemparkan bersama dengan objek AuthCredential (token akses Facebook). Untuk menyelesaikan proses masuk ke penyedia yang dimaksud, pengguna harus masuk terlebih dahulu ke penyedia yang ada (Google) lalu menautkan ke AuthCredential (token akses Facebook) sebelumnya.

Jika Anda menggunakan signInWithPopup , Anda dapat menangani kesalahan auth/account-exists-with-different-credential dengan kode seperti 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

Kesalahan ini ditangani dengan cara yang sama dalam mode pengalihan, dengan perbedaan bahwa kredensial yang tertunda harus di-cache di antara pengalihan halaman (misalnya, menggunakan penyimpanan sesi).

Lanjutan: Menangani alur masuk secara manual

Anda juga dapat mengautentikasi dengan Firebase menggunakan akun Facebook dengan menangani alur masuk dengan Facebook Login JavaScript SDK:

  1. Integrasikan Facebook Login ke dalam aplikasi Anda dengan mengikuti dokumen pengembang . Pastikan untuk mengonfigurasi Login 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 pendengar di status autentikasi Facebook:
    FB.Event.subscribe('auth.authResponseChange', checkLoginState);
    
  3. Setelah Anda mengintegrasikan Facebook Login, tambahkan tombol Facebook Login di halaman web Anda:
    <fb:login-button data-auto-logout-link="true" scope="public_profile,email" size="large"></fb:login-button>
    
  4. Dalam panggilan balik status autentikasi Facebook, tukarkan token autentikasi dari respons autentikasi Facebook dengan kredensial Firebase dan Firebase masuk:

    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();
      }
    }

    Ini juga tempat Anda dapat menangkap dan menangani kesalahan. Untuk daftar kode kesalahan, lihat Dokumen Referensi Auth .
  5. Anda juga harus memeriksa bahwa pengguna Facebook belum masuk 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: Mengautentikasi dengan Firebase di Node.js

Untuk mengautentikasi dengan Firebase di aplikasi Node.js:

  1. Masuk pengguna dengan Akun Facebook mereka dan dapatkan token akses Facebook pengguna. Misalnya, login pengguna di browser seperti yang dijelaskan di bagian Menangani alur login secara manual , tetapi kirim token akses ke aplikasi Node.js Anda alih-alih menggunakannya di aplikasi klien.
  2. Setelah Anda mendapatkan token akses Facebook pengguna, gunakan itu untuk membuat objek Kredensial, lalu login pengguna dengan kredensial:

    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;
        // ...
      });

Otentikasi dengan Firebase di ekstensi Chrome

Jika Anda membuat aplikasi ekstensi Chrome, Anda harus menambahkan ID ekstensi Chrome:

  1. Buka proyek Anda di konsol Firebase .
  2. Di bagian Otentikasi , buka halaman Metode masuk .
  3. Tambahkan URI seperti berikut ke daftar Domain Resmi:
    chrome-extension://CHROME_EXTENSION_ID

Hanya operasi popup ( 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 daripada popup tindakan browser, karena popup otentikasi akan membatalkan popup tindakan browser. Metode popup hanya dapat digunakan dalam ekstensi yang menggunakan Manifest V2 . Manifest V3 yang lebih baru hanya mengizinkan skrip latar belakang dalam bentuk pekerja layanan, yang tidak dapat melakukan operasi popup sama sekali.

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

Menyesuaikan domain pengalihan untuk masuk ke Facebook

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

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

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

  1. Ikuti langkah 1 sampai 3 di Menyiapkan domain Anda untuk Hosting . Saat Anda memverifikasi kepemilikan domain, Hosting menyediakan sertifikat SSL untuk domain khusus Anda.
  2. Tambahkan domain khusus Anda ke daftar domain resmi di Firebase console : auth.custom.domain.com .
  3. Di konsol pengembang Facebook atau halaman penyiapan OAuth, daftar putih URL halaman pengalihan, yang akan dapat diakses di domain khusus Anda: https://auth.custom.domain.com/__/auth/handler .
  4. Saat Anda menginisialisasi pustaka JavaScript, tentukan domain khusus Anda dengan bidang authDomain : l10n
    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 selanjutnya

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

  • Di aplikasi Anda, cara yang disarankan untuk mengetahui status autentikasi pengguna Anda adalah dengan menyetel pengamat pada objek Auth . Anda kemudian bisa mendapatkan informasi profil dasar pengguna dari objek User . Lihat Kelola Pengguna .

  • Dalam Aturan Keamanan Firebase Realtime Database dan Cloud Storage , Anda bisa mendapatkan ID pengguna unik pengguna yang masuk dari variabel auth , dan menggunakannya untuk mengontrol data apa yang dapat diakses pengguna.

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

Untuk mengeluarkan 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.
});

Bagaimana cara login FB lewat email?

Login ke akun Facebook Anda.
Buka m.facebook.com di browser seluler Anda..
Masukkan salah satu info berikut: Email: Anda bisa login dengan email apa pun yang tercantum di akun Facebook Anda. ... .
Masukkan kata sandi Anda dan ketuk Login..

Apakah bisa login FB dengan email?

Email: Anda bisa login dengan email apa pun yang tercantum di akun Facebook Anda. Nomor telepon: Jika nomor ponsel Anda sudah terkonfirmasi di akun, Anda bisa memasukkannya di sini (jangan tambahkan angka nol di depan kode negara atau simbol lain).

Bagaimana cara login FB yang lupa email dan password?

Masukkan email yang telah terdaftar di Facebook..
Pilih kirim kode melalui email..
Klik 'Lanjutkan'.
Lalu, buka kotak masuk pada email terdaftar tersebut..
Salin kode keamanan yang dikirimkan dan masukkan ke kolom yang tersedia di halaman pemulihan..

Kode login FB lihat dimana?

Untuk mendapatkan kode: Ketuk. di kanan atas Facebook. Gulir ke bawah dan ketuk Pengaturan, lalu ketuk Keamanan dan Login.