Puoi consentire agli utenti di autenticarsi con Firebase utilizzando i loro account Facebook integrando Facebook Login nella tua app. Puoi integrare Facebook Login utilizzando l'SDK Firebase per eseguire il flusso di accesso o eseguendo manualmente il flusso di accesso di Facebook e passando il token di accesso risultante a Firebase.
Prima di iniziare
- Aggiungi Firebase al tuo progetto JavaScript.
- Sul sito Facebook for Developers, recupera l'ID app e un App Secret per la tua app.
- Attiva l'accesso con Facebook:
- Nella console Firebase, apri la sezione Auth.
- Nella scheda Metodo di accesso, attiva l'accesso a Facebook e specifica l'ID app e il Segreto dell'app che hai ricevuto da Facebook.
- Poi, assicurati che l'URI di reindirizzamento OAuth (ad es.
my-app-12345.firebaseapp.com/__/auth/handler
) sia elencato come uno degli URI di reindirizzamento OAuth nella pagina delle impostazioni dell'app Facebook sul sito Facebook per gli sviluppatori nella configurazione di Impostazioni prodotto > Accesso Facebook.
Gestire il flusso di accesso con l'SDK Firebase
Se stai creando un'app web, il modo più semplice per autenticare gli utenti con Firebase utilizzando i loro account Facebook è gestire il flusso di accesso con l'SDK Firebase JavaScript. Se vuoi autenticare un utente in Node.js o in un altro ambiente non browser, devi gestire manualmente il flusso di accesso.
Per gestire il flusso di accesso con l'SDK Firebase JavaScript, segui questi passaggi:
- Crea un'istanza dell'oggetto provider Facebook:
Web
import { FacebookAuthProvider } from "firebase/auth"; const provider = new FacebookAuthProvider();
Web
var provider = new firebase.auth.FacebookAuthProvider();
- Facoltativo: specifica gli ambiti OAuth 2.0 aggiuntivi che vuoi
da richiedere al provider di autenticazione. Per aggiungere un ambito, richiama
addScope
. Ad esempio:Web
provider.addScope('user_birthday');
Web
provider.addScope('user_birthday');
- (Facoltativo) Per localizzare il flusso OAuth del provider nelle preferenze dell'utente
senza trasmettere esplicitamente i parametri OAuth personalizzati pertinenti, aggiornala
sull'istanza Auth prima di avviare il flusso OAuth. Ad esempio:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
- Facoltativo: specifica ulteriori parametri personalizzati del provider OAuth
che vuoi inviare con la richiesta OAuth. Per aggiungere un parametro personalizzato, richiama
setCustomParameters
sul provider inizializzato con un oggetto contenente la chiave come specificato nella documentazione del provider OAuth e dal valore corrispondente. Ad esempio:Web
provider.setCustomParameters({ 'display': 'popup' });
Web
provider.setCustomParameters({ 'display': 'popup' });
- Esegui l'autenticazione con Firebase utilizzando l'oggetto provider di Facebook. Puoi
agli utenti di accedere con i propri account Facebook aprendo un
o reindirizzando alla pagina di accesso. Il metodo di reindirizzamento è
preferito sui dispositivi mobili.
- Per accedere con una finestra popup, chiama
signInWithPopup
:Web
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; // IdP data available using getAdditionalUserInfo(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
firebase .auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... // 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; // ... });
Qui puoi anche rilevare e gestire gli errori. Per un elenco dei codici di errore, consulta la documentazione di riferimento per le autorizzazioni.
- Per accedere reindirizzando alla pagina di accesso, chiama
signInWithRedirect
: Segui le best practice quando utilizzi "signInWithRedirect".Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResult
quando viene caricata la pagina:Web
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; // IdP data available using getAdditionalUserInfo(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; // AuthCredential type that was used. const credential = FacebookAuthProvider.credentialFromError(error); // ... });
Web
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; // IdP data available in result.additionalUserInfo.profile. // ... }).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; // ... });
- Per accedere con una finestra popup, chiama
Esegui l'autenticazione con Firebase in un'estensione di Chrome
Se stai sviluppando un'app di estensione di Chrome, consulta la Guida ai documenti fuori schermo.
Passaggi successivi
Dopo che un utente ha eseguito l'accesso per la prima volta, viene creato un nuovo account utente e collegato alle credenziali, ovvero nome utente e password, numero di telefono o informazioni del fornitore di autenticazione, con cui l'utente ha eseguito l'accesso. Questo nuovo viene archiviato come parte del progetto Firebase e può essere utilizzato per identificare a un utente in ogni app del progetto, a prescindere da come esegue l'accesso.
-
Nelle tue app, il modo consigliato per conoscere lo stato di autenticazione dell'utente è impostare un osservatore sull'oggetto
Auth
. Puoi quindi recuperare le informazioni di base del profilo dell'utente dall'oggettoUser
. Consulta: Gestisci utenti. Nelle Regole di sicurezza Firebase Realtime Database e Cloud Storage, puoi recuperare l'ID utente univoco dell'utente che ha eseguito l'accesso dalla variabile
auth
e utilizzarlo per controllare a quali dati può accedere un utente.
Puoi consentire agli utenti di accedere alla tua app utilizzando più autenticazioni collegando le credenziali del provider di autenticazione a un a un account utente esistente.
Per disconnettere un utente, chiama
signOut
:
Web
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });