繁体   English   中英

Firebase - 为同一用户使用两个身份验证提供程序

[英]Firebase - use two authentication providers for same user

对于包含两个不同应用程序的 Firebase 项目,我需要在 Firebase 用户上激活两个不同的身份验证提供程序。 目前,我可以(通过控制台)设置 Google 登录提供程序邮件/密码提供程序,但不能在同一用户上同时设置。

有趣的是,其中一个用户(具有控制台访问权限的开发人员)能够启用它,所以肯定有办法,但我们无法弄清楚他是如何做到的。 在下面的屏幕截图中查看具有两个提供程序的用户。

firebase 上的当前用户

当前的身份验证方法:

认证方法

编辑 14/10/2018

“每个电子邮件地址一个帐户”设置已禁用。 没运气。 我们试过这个: https : //firebase.google.com/docs/auth/android/account-linking

但似乎我们无法使其与节点 js 一起使用。

不能遵循评论中建议的第三个选项(为不同的应用程序使用不同的项目),因为它们实际上是具有一些共同组件的两个相关应用程序。

在进行了一些故障排除后,我担心我会添加一些更奇怪的东西:1)禁​​用“每个电子邮件地址一个帐户”选项后,我尝试删除我的帐户,然后使用电子邮件\\密码再次添加它,这成功了。 然后我尝试在应用程序中使用 google 登录:登录失败但在 firebase 中我能够看到一个新的“空”(无电子邮件)用户,具有新的 UID。 然后我删除了所有帐户并尝试在应用程序中使用 google 登录(通常它会在 firebase 中创建帐户),结果:登录失败,创建了空帐户。 删除它,尝试在控制台上手动创建它,结果:“帐户已存在”。

因此,在此之后,我们只是放弃并采用不同的方式来处理身份验证。 希望将来能找到它,因为它对我们真的很有用。

目前,我可以(通过控制台)设置 Google 登录提供程序或邮件/密码提供程序,但不能在同一用户上同时设置。

听起来您启用了每个电子邮件地址一个帐户的设置(这是默认设置)。 启用此功能后,每个电子邮件地址只能有一个帐户。 因此,如果用户首先使用电子邮件+密码登录,然后该用户尝试使用其 Google 帐户登录同一电子邮件,则第二次登录将被拒绝。 这是此设置的预期行为,旨在防止一个用户获得多个帐户。

支持用户通过多个提供商登录的推荐方法是将他们的电子邮件+密码和 Google 帐户链接在一起,如 链接帐户文档中所示。

因此,您必须选择以下选项之一:

  1. 登录方法屏幕中禁用“每个电子邮件地址一个帐户”设置。
  2. 启用帐户链接,如果这确实是单个用户使用两个提供商登录,则这是首选方法。
  3. 为每个应用程序使用单独的项目,如果应用程序不相关,或者将被用户视为单独的应用程序,这是首选方法。 例如:如果您有一个常规应用程序和一个供管理员用户使用的应用程序,那么它们应该在同一个项目中。 但是如果你有两个不同的游戏,他们不应该使用同一个项目。

所有可用的身份验证方法都是可能的。 但是在使用中,当用户注册了一个提供商时,他/她可以尝试登录/注册另一个提供商。 如果现有用户,那么您应该将凭证link到现有帐户:

auth.currentUser.linkWithPopup(provider).then((result)=>{
    var user = result.user 
}).catch((error)=> {
   // Handle Errors here.
   // ...
});

欲了解更多信息,点击此处

可以通过以下方式轻松完成:

    var provider = new firebase.auth.GoogleAuthProvider();
    firebase.auth().currentUser.linkWithPopup(provider).then(function(result) {
      var credential = result.credential;
      var user = result.user;
    }).catch(function(error){
    });
  }

使用电子邮件登录后,可以使用另一个按钮通过使用onclick="linkWithPopup()"来链接帐户,这会创建一个弹出框,允许用户链接到另一个帐户/提供商。 你会看到 firebase 的变化,我希望它有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM