Firebase会返回多个ID,这是唯一的ID?

时间:2016-08-26 05:24:35

标签: android firebase firebase-authentication

我是Firebase的新用户,我正在尝试将Firebase Auth api连接到我的应用程序中,我已经关注了来自Official site的更新文档的文档,所有工作都正常。

我已经成功完成了SignIn,并且在我的仪表板中,我在登录后获得了所有用户。

我的问题是我对从Firebase返回的各种ID感到困惑

代码如下:

 for (UserInfo profile : user.getProviderData()) {
                // Id of the provider (ex: google.com)
                String providerId = profile.getProviderId();
                //if Id of the provider is firebase it means we have successfully get back data after saving in firebbase hence we continue to app
                if(providerId.equals("firebase")) {
                    // UID specific to the provider
                    Other.SavePref(this, "LoginToken", profile.getUid());

                    // Name, email address, and profile photo Url
                    String name = profile.getDisplayName();
                    String email = profile.getEmail();
                    Uri photoUrl = profile.getPhotoUrl();

                    Log.e("userinfo", "  ::  " + profile.getUid()+ " :: " + name + " :: " + email + " :: " + photoUrl);
                }
            };

如上面的代码我只检查providerId是否是firebase然后我存储信息,但如果我不这样做,它会给我数据两次

    来自Firebase的
  1. 来自Google的
  2. 如果我使用这种方法,我有两个userIds: profile.getUid(),我只想知道哪一个是唯一的?哪个我应该使用?

    有人可以提出一种方法,在申请方成功登录后该怎么办,这将非常有帮助..

1 个答案:

答案 0 :(得分:5)

用户可以使用多个提供商登录。每个提供程序为该用户生成自己的唯一ID。您可以在user info下为每个提供商访问这些内容。

除此之外,Firebase身份验证还会为用户生成自己的唯一ID。无论用户使用哪个提供商登录,他们最终都会使用相同的UID。您可以在FirebaseUser.getUid()下找到。

要识别用户,您通常会使用FirebaseUser.getUid()中的值,所以在您的代码段中user.getUid()