Uso do Login do Facebook com sistemas de login existentes

É possível criar seus aplicativos com um mecanismo de login personalizado e com o Login do Facebook. Este guia aborda alguns desses cenários e fornece dicas para lidar com a experiência de uma pessoa que usa esses aplicativos.

Visão geral

Você pode implementar seu próprio sistema de login em que alguém se cadastra no aplicativo usando email e senha, e uma conta é criada para a pessoa. Normalmente, nesse caso, os aplicativos usam uma etapa de verificação de email para autenticar a identidade.

Outra opção é usar o Login do Facebook completamente para o sistema de login. Nesse caso, uma pessoa se cadastra no aplicativo usando o Login do Facebook, é criada uma conta para ela, e o Facebook trata da etapa de autenticação.

Além desses cenários, o aplicativo pode precisar lidar com situações mais complexas:

  • Uma pessoa se cadastra no aplicativo usando email e senha, mas depois quer usar o Login do Facebook para obter dados a partir da conta do Facebook, para publicar na linha do tempo ou apenas para usar como login no futuro.
  • Uma pessoa se cadastra no aplicativo usando email e senha, mas depois escolhe fazer login com o Facebook separadamente. Este guia supõe que o email fornecido primeiro e o email principal associado com a conta do Facebook sejam os mesmos.
  • Uma pessoa se cadastra no aplicativo usando o Login do Facebook e depois quer fazer login nessa conta usando um endereço de email e senha.

Este guia descreve o que achamos que são as melhores maneiras de lidar com essas situações.

Associação do Login do Facebook com uma conta já conectada

Esta seção abrange o caso em que alguém usa o sistema de login personalizado de um aplicativo para criar uma conta. Mais tarde, enquanto ainda está conectado, o usuário quer associar sua conta do Facebook ao aplicativo. Por exemplo, as pessoas podem se cadastrar no Spotify com um endereço de email e uma senha, mas depois optar por associar essa conta à sua conta do Facebook usando o Login do Facebook, como quando querem publicar o que estão ouvindo na linha do tempo.

1. Adicionar um fluxo de Login do Facebook ao seu aplicativo

Leia os nossos guias para saber como usar um fluxo de Login do Facebook em seu aplicativo para concluir esta etapa. No exemplo do Spotify, você começa o fluxo do Login do Facebook no ponto do aplicativo em que a pessoa indica que gostaria de publicar a sua atividade de audição, ou você pode oferecer uma opção explícita para vincular a conta do usuário à conta do Facebook.

2. Lidar com a mescla de informações da conta

Depois que uma pessoa entrou no seu aplicativo usando o seu próprio sistema de login e, em seguida, conclui o fluxo de Login do Facebook, seu aplicativo terá duas coisas muito importantes que devem agora ser mescladas:

  • A conta criada pelo aplicativo
  • Informações do Facebook identificando a conta do Facebook dessa pessoa

Na maioria dos aplicativos, a conta original terá sido armazenada em uma tabela de banco de dados, portanto a abordagem mais simples é associar as informações da conta do Facebook com a conta que está no banco de dados.

Em geral, é melhor criar uma nova tabela na qual você armazene informações da conta do Facebook da pessoa. A vantagem de manter uma tabela separada em vez de adicionar mais colunas à sua tabela de conta existente é que isso permite que você ofereça suporte rapidamente a outros logins de contas do OAuth ao longo do tempo.

No futuro, se a mesma pessoa escolher fazer login no seu aplicativo, você poderá combinar as informações armazenadas no banco de dados para que elas façam login usando qualquer método perfeitamente.

Como mesclar contas criadas separadamente com o Login do Facebook

Nesta situação, uma pessoa se conectou ao seu aplicativo com suas próprias credenciais, como um email e senha, por exemplo. Mais tarde, quando a pessoa se desconecta, ela escolhe fazer login no seu aplicativo usando o Login do Facebook. Seu aplicativo agora terá duas contas para a mesma pessoa, uma criada pelo sistema de login do aplicativo e outra criada por meio do fluxo do Login do Facebook. A fim de proporcionar a melhor experiência para essa pessoa, seu aplicativo deve tentar mesclar essas contas em uma só.

Este guia supõe que cada conta criada por seu aplicativo tem um endereço de email associado a ela. No entanto, é possível que a pessoa tenha usado um email diferente para criar a conta existente do que o email que ela tem associado à conta do Facebook. Neste caso, você deve oferecer às pessoas uma opção explícita de "Mesclagem de contas" em algum lugar em seu aplicativo e, em seguida, permitir que a pessoa especifique manualmente as duas contas separadas que deseja mesclar.
Além disso, se suas próprias contas personalizadas não armazenarem um endereço de email, então, novamente, você terá que permitir que a pessoa especifique manualmente as contas que ela deseja mesclar.

1. Modifique o seu fluxo de Login do Facebook para solicitar permissões de email

Se o próprio sistema de login personalizado do seu aplicativo usa um endereço de email para identificar exclusivamente cada conta, você também deve solicitar o endereço de email da pessoa (usando a permissão email) durante o fluxo de Login do Facebook. Leia o nosso guia de solicitação de permissões para descobrir como fazer isso.

2. Como mesclar a conta de Login do Facebook como a conta do aplicativo

Depois de um login bem-sucedido usando o Facebook, você terá o endereço de email da pessoa, um ID do Facebook e o token de acesso. Seu aplicativo deve procurar uma conta existente que tenha sido criada com o mesmo endereço de email. Caso haja alguma, você deve mesclar as contas e adicionar as informações do Facebook à conta existente como recomendado acima.

Neste ponto, você deve conectar a pessoa como faria normalmente.

Se não houver uma entrada existente no seu banco de dados com esse endereço de email, então deve considerar a pessoa como um novo usuário.

Como adicionar informações de login manual a uma conta criada com o Login do Facebook

Esta situação ocorre quando alguém cria uma conta no seu aplicativo usando o Login do Facebook, mas depois quer também fazer login na conta usando uma credencial única e uma senha. Por exemplo, o Netflix tem um aplicativo Web que usa o Login do Facebook junto com um sistema de login regular. Outro exemplo seria um aplicativo do Xbox 360, em que as pessoas só podem usar o sistema de login regular.

1. Verifique se o endereço de email do Login do Facebook é verificado

Se você usar um endereço de email como credencial única que identifica cada conta, o aplicativo deverá verificar se o endereço de email associado à conta do Facebook da pessoa (e obtido durante o Login do Facebook) é válido. Você pode fazer isso criando um código em seu aplicativo para enviar um email de confirmação para o endereço obtido após o Login do Facebook (você provavelmente precisará ter este passo como parte de seu sistema normal de login de qualquer maneira).

2. Peça que a pessoa forneça uma nova senha (e outras credenciais)

Depois de confirmado o endereço de email, agora você pode solicitar que a pessoa forneça uma senha, indicando que ela pode usá-la para entrar no aplicativo no​futuro, junto com o endereço de email. Uma vez fornecida a senha, você pode adicioná-la à mesma parte do seu banco de dados onde atualmente armazena informações da conta.

Se o sistema de login do seu aplicativo não usa um endereço de email como identificação e usa algo gerado pelo usuário, um nome de usuário, por exemplo, então você também deve pedir que a pessoa forneça essa informação junto com uma senha.

As pessoas também podem esperar que o seu aplicativo ofereça a capacidade de remover a associação entre a conta do Facebook e a conta de login. Isso deve implicar apenas na retirada das informações do Facebook pertencentes à pessoa em questão da tabela do banco de dados da conta.