Autenticação de nome de usuário em vez de email

Com o Firebase, posso inscrever-me e fazer login de usuários usando endereços de e-mail. No entanto, e se eu quiser que o aplicativo seja baseado em nome de usuário. Por exemplo, você faria login com “Bobzilla” em vez de “Bob@mail.com”?

Isso é possível com o Firebase?

Simples: você pode adicionar qualquer domínio por trás do nome de usuário. Então, depois de ter determinado o nome de usuário, registre seu usuário com @vikzillasapp.com .

Observe que isso impossibilitará que o usuário redefina a senha se a esquecer, já que o Firebase usa o endereço de e-mail para enviar o e-mail de redefinição de senha.

Se isso não atender às suas necessidades, você poderá criar seu próprio provedor de identidade usando as instruções da documentação do Firebase . Isso requer um código que seja executado em um ambiente confiável, para o qual você pode usar seu próprio servidor ou o Cloud Functions for Firebase . Existe agora mesmo um exemplo disso no repository functions-samples .

Em vez de usar um método no qual você atribui um endereço de e-mail para o usuário, pode ser uma opção melhor procurar um endereço de e-mail no database.

Um exemplo seria:

  1. Solicitar o nome de usuário para login com nome de usuário e senha
  2. Verifique se o nome de usuário existe em seu database e recupere o endereço de e-mail correspondente para essa conta
  3. Passe este endereço de e-mail para o processo de login sem problemas

Você pode usar a autenticação personalizada do firebase . Autenticação personalizada é um método no qual o usuário pode fazer login no aplicativo usando token personalizado.

Mas, você precisa de um código de back-end para criar um token personalizado quando o usuário enviar um nome de usuário e uma senha para esse back-end.

Felizmente, agora há uma function de nuvem firebase, com evento http, que pode resolver seu problema facilmente. O passo é:

  1. Usuário envia nome de usuário e senha para a function de nuvem url via query params (GET) ou corpo da requisição (POST)

  2. Funtion Cloud irá verificar se o nome de usuário e senha é válida (ex: de database em tempo real)

  3. Se o nome de usuário e a senha forem válidos, a function de nuvem criará um token personalizado usando userId (você precisa salvar o userId). E então enviá-lo para o corpo de resposta

  4. O cliente pode então fazer login usando esse customToken