首页 > 解决方案 > 如何在firebase中获得与当前用户关联的帐户

问题描述

我正在尝试将我的 firebase 帐户链接到我的 google 帐户和 facebook 帐户,直到这里一切正常。这是我如何链接帐户的代码。

mAuth.getCurrentUser().linkWithCredential(credential)
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                Log.d(TAG, "linkWithCredential:success");
                FirebaseUser user = task.getResult().getUser();
                updateUI(user);
            } else {
                Log.w(TAG, "linkWithCredential:failure", task.getException());
                Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                        Toast.LENGTH_SHORT).show();

            }


        }
    });

现在我想得到,是我当前的帐户是链接到 facebook 或 google。是否可以获得此信息,或者我应该将此信息保存到数据库中吗?

标签: androidfirebasefirebase-authentication

解决方案


现在我想知道,我当前的帐户是链接到 facebook 还是 google 的?

您可以检查提供商 ID 以查看用户是否使用 Google 或 Facebook 登录,如下所示:

FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser != null) {
    for (UserInfo userInfo : firebaseUser.getProviderData()) {
        if (userInfo.getProviderId().equals("google.com")) {
            Log.d(TAG, "User is signed in with Google");
        } else if(userInfo.getProviderId().equals("facebook.com")) {
            Log.d(TAG, "User is signed in with Facebook");
        }
    }
}

您还可以使用以下代码:

List<? extends UserInfo> infos = user.getProviderData();
for (UserInfo ui : infos) {
    if (ui.getProviderId().equals(GoogleAuthProvider.PROVIDER_ID)) {
        Log.d(TAG, ui.getProviderId());
    }
}

推荐阅读