Certo, então eu sei que perguntas semelhantes já foram feitas no passado e houve algumas discussões. Analisei todas elas e ainda não consigo encontrar uma resposta definitiva, principalmente porque a maioria dessas postagens é antiga, a documentação do Facebook compartilhada nessas respostas está obsoleta e essas páginas de documentação do Facebook não existem mais.
Tenho 2 perguntas -
Pergunta 1: Ao integrar com o Facebook para SSO, podemos confiar cegamente que o e-mail retornado pelo Facebook é verificado? Ou temos que confirmar isso enviando ao usuário um e-mail com um link? Sei que hoje, se você criar uma conta no Facebook usando seu e-mail, o Facebook fará com que você a verifique enviando um código de 6 dígitos. Mas devo me preocupar com contas criadas décadas atrás, quando eles podem ou não ter verificado? Além disso, acredito que o Facebook também permite que você adicione endereços de e-mail adicionais à sua conta. Você sabe se eles podem fazer login usando esses endereços de e-mail e se eles enviam algum deles no retorno de chamada do SSO?
Pergunta 2: Sei que o Facebook também permite cadastro/login por número de telefone. Meu aplicativo usa o ID de e-mail como ID único, então, se eu não receber um e-mail de volta, não permitirei que os usuários façam login. Portanto, esse fluxo não é muito complexo. Mas você sabe o que acontece se um usuário criar uma conta com seu número de telefone e adicionar um e-mail a ela? O que o Facebook envia no retorno de chamada? O e-mail, o telefone ou ambos?
Qualquer contribuição é bem-vinda. Além disso, o que a maioria das pessoas faz? É uma boa prática confirmar o usuário enviando um e-mail com um link de verificação? Ou a maioria dos aplicativos confia no Facebook e permite que o usuário acesse sem muita dificuldade?
Sim. O Facebook nunca divulgou o e-mail de um usuário que não tenha sido verificado; tem sido assim desde o início da API. Mesmo que a documentação não indique mais isso explicitamente, não há razão para que eles mudem alguma coisa.
Por um tempo, a caixa de diálogo de login permitia que os usuários escolhessem quais endereços de e-mail cadastrados queriam compartilhar com um aplicativo, ao conceder a
email
permissão pela primeira vez. Não tenho certeza se esse recurso ainda existe. Mas esses também seriam apenas endereços de e-mail verificados que o usuário poderia escolher.Se um usuário se inscrever no seu serviço usando um endereço de e-mail e depois mudar para um diferente (ele pode remover o aplicativo e então conceder permissões novamente) for uma preocupação, então baseie a decisão, se você já tem um registro para a conta dele, no ID do usuário no escopo do aplicativo, e não no e-mail dele.
O Facebook não fornece os números de celular dos usuários via API (pode ser diferente para a API do WhatsApp, mas não é com isso que você está lidando aqui).
Se eles tiverem um e-mail verificado e você tiver solicitado o
email
campo do objeto do usuário ao solicitar os dados, isso será retornado.Se eles não tiverem um e-mail verificado, você simplesmente não receberá uma
email
propriedade no que for devolvido. Mas também não receberá um número de telefone.