Onur Çeker
Onur Çeker

Reputation: 133

How to determine if a Firebase user is signed in using email and password authentication

I'm using Firebase authentication. The user can log in via e-mail password, google and facebook. How do I know if a user is logged in using an email-password? I looked at this answer

and i tried this:

for (UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()) {
    if (!(user.getProviderId().equals("facebook.com") || user.getProviderId().equals("google.com"))) {
        System.out.println("User is signed in with Email");
    }
}

But when I use both google and email passwords if statement being true.

Upvotes: 13

Views: 3960

Answers (3)

R.K
R.K

Reputation: 1839

Below is what works for me:

user.getProvider() returns firebase

user.getProviderData() returns some Id.

The list returned by user.getProviders() returns the login account type

Here's what I did:

@Override
    protected void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.

        FirebaseUser currentUser = mAuth.getCurrentUser();
        if (currentUser == null)
            return;

        for (int i = 0; i < currentUser.getProviders().size(); i++) {
            if (!currentUser.getProviders().get(i).equals("google.com") && !currentUser.getProviders().get(i).equals("facebook.com")) {
               //User signed in with a custom account
               //Todo: call server DB or perform some task

            } else
               updateUI(currentUser);
        }

       // Todo: Complete login activity and switch to the main activity
}

Upvotes: 3

Minion
Minion

Reputation: 1064

Simply check if user email is empty or not , if it is empty means user has logged in without email

if(TextUtils.isEmpty(user.getEmail())){
 phone = user.getPhoneNumber();
}

Upvotes: 1

Frank van Puffelen
Frank van Puffelen

Reputation: 598728

The provider ID for email+password is password. So:

for (UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()) {
    if (user.getProviderId().equals("password")) {
        System.out.println("User is signed in with email/password");
    }
}

Upvotes: 7

Related Questions