簡體   English   中英

如何確定 Firebase 用戶是否使用電子郵件和密碼身份驗證登錄

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

我正在使用 Firebase 身份驗證。 用戶可以通過電子郵件密碼、谷歌和臉書登錄。 我如何知道用戶是否使用電子郵件密碼登錄? 我看了這個答案

我試過這個:

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");
    }
}

但是當我同時使用谷歌和電子郵件密碼時,如果聲明為真。

email+password提供者 ID 是password 所以:

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

以下是對我有用的內容:

user.getProvider()返回firebase

user.getProviderData()返回一些 Id。

user.getProviders()返回的列表返回登錄帳戶類型

這是我所做的:

@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
}

只需檢查用戶電子郵件是否為空,如果為空則表示用戶已登錄而沒有電子郵件

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM