Como fazer login de usuários com o Facebook

Neste documento, mostramos como usar o Identity Platform para fazer login de usuários com o Facebook.

Antes de começar

Neste tutorial, pressupomos que você já tenha ativado o Identity Platform e tenha um aplicativo da Web básico escrito usando HTML e JavaScript. Consulte o Guia de início rápido para saber como.

Como configurar o Facebook como um provedor

Para configurar o Facebook como um provedor de identidade:

  1. Acesse a página Provedores do Identity Platform no Console do Cloud.

    Acessar a página "Provedores do Identity Platform"

  2. Clique em Adicionar um provedor.

  3. Selecione Facebook na lista.

  4. Insira o ID e o secret do app do Facebook. Se você ainda não tem um ID e um secret, conseguirá na página Facebook para desenvolvedores.

  5. Configure o URI listado em Configurar Facebook como um URI de redirecionamento OAuth válido para seu aplicativo Facebook.

  6. Registre os domínios do seu aplicativo clicando em Adicionar domínio em Domínios autorizados. Para fins de desenvolvimento, localhost já está ativado por padrão.

  7. Em Configurar seu aplicativo, clique em Detalhes de configuração. Copie o snippet no código do aplicativo para inicializar o SDK do cliente do Identity Platform.

  8. Clique em Save.

Como fazer login de usuários com o SDK do cliente

  1. Crie uma instância do objeto do provedor do Facebook:

    JavaScript

    var provider = new firebase.auth.FacebookAuthProvider();
  1. Opcional: adicione escopos do OAuth. Os escopos especificam quais dados você está solicitando do Facebook. Dados mais confidenciais podem exigir escopos específicos. Consulte a documentação do provedor para determinar quais escopos são necessários para seu aplicativo.

    JavaScript

    provider.addScope('user_birthday');
    
  1. Opcional: localize o fluxo de autenticação. É possível especificar uma linguagem ou usar a linguagem padrão do dispositivo:

    JavaScript

    firebase.auth().languageCode = 'fr_FR';
    // To apply the default browser preference instead of
    // explicitly setting it.
    // firebase.auth().useDeviceLanguage();
    
  2. Opcional: especifique outros parâmetros de OAuth personalizados. Eles são específicos do Facebook e geralmente são usados para personalizar a experiência de autenticação.

    JavaScript

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

    Não é possível transmitir parâmetros reservados pelo OAuth ou pelo Identity Platform.

  3. Use o objeto do provedor do Facebook para fazer login do usuário. Você pode abrir uma janela pop-up ou redirecionar a página atual. O redirecionamento é mais fácil para usuários de dispositivos móveis.

    Para mostrar um pop-up, chame signInWithPopup():

    JavaScript

    firebase.auth().signInWithPopup(provider).then(function(result) {
      // This gives you a Facebook Access Token. You can use it to access the Facebook API.
      var token = result.credential.accessToken;
      // 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;
      // ...
    });

    Para redirecionar a página, primeiro chame signInWithRedirect():

    JavaScript

    firebase.auth().signInWithRedirect(provider);

    Em seguida, recupere o token do Facebook chamando getRedirectResult() quando a página for carregada:

    JavaScript

    firebase.auth().getRedirectResult().then(function(result) {
      if (result.credential) {
        // This gives you a Facebook Access Token. You can use it to access the Facebook API.
        var token = result.credential.accessToken;
        // ...
      }
      // 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;
      // ...
    });

Quando você tiver um token de acesso, poderá usá-lo para chamar a API do Facebook. Exemplo:

REST

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

Como fazer login manual dos usuários

Se você não quiser usar o SDK do cliente, também poderá processar o fluxo de login manualmente:

  1. Integre a autenticação do Facebook no seu aplicativo seguindo as etapas na documentação do desenvolvedor.

  2. Faça login do usuário com o Facebook usando o fluxo implementado na etapa anterior.

  3. Substitua o token recebido do Facebook por uma credencial do Identity Platform:

    var credential = firebase.auth.FacebookAuthProvider.credential(accessToken);
    
  4. Use a credencial para fazer login do usuário com o Identity Platform:

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

A seguir