android - 如何在 firebase 中获取与当前用户关联的帐户

标签 android firebase firebase-authentication

我正在尝试将我的 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。是否可以获取此信息,或者我应该将此信息保存到数据库中吗?

最佳答案

Now I want to get, is my current account is linked to facebook or 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());
    }
}

关于android - 如何在 firebase 中获取与当前用户关联的帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52362602/

相关文章:

android - 我如何在android中的搜索栏中绘制可绘制的进度

android - 联系人号码的格式

Firebase在云功能中验证电子邮件密码

ios - 将 "Full Name"字段添加到 Firebase 电子邮件/密码身份验证?

ios - 应用程序委托(delegate)或初始 View Controller ,检查用户是否通过 Firebase 登录 iOS 应用程序?

Android 应用图像标记

android - 使用 ByteBuffer 中的像素数据连续更新 SurfaceView 时性能较差

ios - 如何处理多次写入,以便在一次写入失败时不提交数据?

javascript - snapshot.val() 返回未定义,但它正确记录。 Node.js 火力基地

android - Firebase Android 身份验证失败 : expired_token (Auth token is expired)