Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase Auth using phone number and password

I am developing Android app using Firebase. Because of that, I want to use Firebase Auth. I have following requirements:

  • Register/Log in using Facebook
  • Register/Log in using Email/Password
  • Register/Log in using Phone Number/Password

The first two are OK, I followed basic tutorials. However, Phone Number / Password is the problem here. Firebase supports only Phone Number/SMS Token for this (its called Phone Auth), but there is no mention about my case. I do not want to hack Firebase and use its realtime database instead of Auth 'database'. Is there any better way to achieve this?

Thank you.

like image 477
Tom11 Avatar asked Sep 21 '17 19:09

Tom11


People also ask

How do I log into Firebase with my phone number and password?

Enable Phone Number sign-in for your Firebase project To sign in users by SMS, you must first enable the Phone Number sign-in method for your Firebase project: In the Firebase console, open the Authentication section. On the Sign-in Method page, enable the Phone Number sign-in method.

How can I get my Firebase authentication password?

If you haven't yet connected your app to your Firebase project, do so from the Firebase console. Enable Email/Password sign-in: In the Firebase console, open the Auth section. On the Sign in method tab, enable the Email/password sign-in method and click Save.

How do I authenticate a phone number?

What is phone number authentication? Phone number authentication is an authentication method in which a sender sends an SMS message to a receiver's phone. Then, the receiver logs into its phone with a one-time code provided in the SMS message.

Can Firebase send OTP?

After adding his phone number, the user will click on the Get OTP button after that Firebase will send OTP on that number which is mentioned above.


2 Answers

Use Fake Email:

Well, Firebase doesn't support sign in with mobile number and password but it supports email and password. So you can create a fake email with your mobile number.

Ie: 78******[email protected]

Also, you can create a complete Authentication system using it.

Registration:

  • Input user mobile and password and proceed to the next page.

  • Now use Firebase Phone Auth (OTP) to createUser. If process success, link fake email, password credentials in background.

    AuthCredential credential = EmailAuthProvider.getCredential(email, password); auth.getCurrentUser().linkWithCredential(credential);

Login:

  • Input mobile and password to login. Convert the mobile in fake email and then signInWithEmailAndPassword().

Forget Password:

  • Redirect the user to a new Page and user Phone Auth to verify the user. If successful, input a new password and change the password of the Email Auth.
like image 55
Shubham Gupta Avatar answered Sep 21 '22 05:09

Shubham Gupta


If you have both email and phone of your user and you can use Admin SDK, then perhaps you could exchange users phone number to his email and login with email and password in the background.

Something like this (node.js)

admin.auth().getUserByPhoneNumber(phoneNumber)
    .then(user => {
        firebase.auth().signInWithEmailAndPassword(user.email, password);
    });
like image 42
Alvis Avatar answered Sep 24 '22 05:09

Alvis