Accesso degli utenti con Facebook

Questo documento mostra come utilizzare Identity Platform per accedere agli utenti con Facebook.

Prima di iniziare

Questo tutorial presuppone che tu abbia già attivato Identity Platform e abbia un'app web di base scritta utilizzando HTML e JavaScript. Per scoprire come fare, consulta la Guida rapida.

Configurazione di Facebook come provider

Per configurare Facebook come provider di identità:

  1. Vai alla pagina Provider di identità nella console Google Cloud.

    Vai alla pagina Provider di identità

  2. Fai clic su Add A Provider (Aggiungi un provider).

  3. Seleziona Facebook dall'elenco.

  4. Inserisci il tuo ID app di Facebook e il secret dell'app. Se non disponi già di un ID e di un secret, puoi ottenerne uno dalla pagina di Facebook per gli sviluppatori.

  5. Configura l'URI elencato in Configura Facebook come URI di reindirizzamento OAuth valido per la tua app Facebook. Se hai configurato un dominio personalizzato in Identity Platform, aggiorna l'URI di reindirizzamento nella configurazione dell'app Facebook in modo da utilizzare il dominio personalizzato anziché il dominio predefinito. Ad esempio, cambia https://myproject.firebaseapp.com/__/auth/handler in https://auth.myownpersonaldomain.com/__/auth/handler.

  6. Registra i domini della tua app facendo clic su Aggiungi dominio in Domini autorizzati. A scopo di sviluppo, localhost è già abilitato per impostazione predefinita.

  7. In Configura la tua applicazione, fai clic su Dettagli di configurazione. Copia lo snippet nel codice della tua app per inizializzare l'SDK client di Identity Platform.

  8. Fai clic su Salva.

Accesso degli utenti con l'SDK client

  1. Crea un'istanza dell'oggetto del provider Facebook:

    JavaScript

    var provider = new firebase.auth.FacebookAuthProvider();
    
  2. Facoltativo:aggiungi ambiti OAuth. Gli ambiti specificano quali dati vengono richiesti a Facebook. Dati più sensibili potrebbero richiedere ambiti specifici. Consulta la documentazione del provider per determinare gli ambiti necessari all'applicazione.

    JavaScript

    provider.addScope('user_birthday');
    
  3. (Facoltativo) Localizza il flusso di autenticazione. Puoi specificare una lingua o utilizzare la lingua predefinita del dispositivo:

    JavaScript

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
    
  4. (Facoltativo) Specifica altri parametri OAuth personalizzati. Questi dati sono specifici di Facebook e vengono generalmente utilizzati per personalizzare l'esperienza di autenticazione. Non puoi trasmettere parametri riservati a OAuth o Identity Platform.

    JavaScript

    provider.setCustomParameters({
    'display': 'popup'
    });
    
  5. Utilizza l'oggetto provider Facebook per accedere all'utente. Puoi aprire una finestra popup o reindirizzare la pagina corrente. Il reindirizzamento è più semplice per gli utenti che usano dispositivi mobili.

    Per visualizzare un popup, chiama signInWithPopup():

    JavaScript

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

    Per reindirizzare la pagina, chiama prima signInWithRedirect().

    Segui le best practice quando utilizzi signInWithRedirect, linkWithRedirect o reauthenticateWithRedirect.

    JavaScript

    firebase.auth().signInWithRedirect(provider);
    

    Quindi, recupera il token di Facebook chiamando getRedirectResult() durante il caricamento della pagina:

    JavaScript

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

Una volta ottenuto un token di accesso, puoi utilizzarlo per chiamare l'API di Facebook. Ad esempio:

REST

curl "https://graph.facebook.com/me?fields=id,name&access_token=[TOKEN]"

Accesso manuale agli utenti

Se non desideri utilizzare l'SDK client, puoi anche gestire il flusso di accesso manualmente.

Questo metodo di accesso supporta anche Facebook Login for Gaming come IdP. Identity Platform non supporta l'implementazione manuale di Facebook Login for Gaming. Accetta solo i token per lo scambio delle credenziali di Identity Platform.

  1. Integra l'accesso a Facebook o Facebook per l'autenticazione dei giochi nella tua app seguendo i passaggi nella relativa documentazione per sviluppatori:

  2. Accedi all'utente con l'accesso a Facebook o Facebook per i giochi utilizzando il flusso implementato nel passaggio precedente.

  3. Scambia il token che ricevi dall'accesso di Facebook o Facebook per Gaming con una credenziale Identity Platform:

    JavaScript

    var credential = firebase.auth.FacebookAuthProvider.credential(accessToken);
    
  4. Utilizza la credenziale per accedere all'utente con Identity Platform:

    JavaScript

    // Sign in with the credential from the user.
    firebase.auth()
      .signInWithCredential(credential)
      .then((result) => {
        // Signed in
        // ...
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.email;
        // ...
      });
    

Passaggi successivi