![](/img/trans.png)
[英]How can the User ID in Firebase Authentication be the same across all Authentication Providers (Google, Facebook, Github)?
[英]Firebase - use two authentication providers for same user
对于包含两个不同应用程序的 Firebase 项目,我需要在 Firebase 用户上激活两个不同的身份验证提供程序。 目前,我可以(通过控制台)设置 Google 登录提供程序或邮件/密码提供程序,但不能在同一用户上同时设置。
有趣的是,其中一个用户(具有控制台访问权限的开发人员)能够启用它,所以肯定有办法,但我们无法弄清楚他是如何做到的。 在下面的屏幕截图中查看具有两个提供程序的用户。
当前的身份验证方法:
编辑 14/10/2018
“每个电子邮件地址一个帐户”设置已禁用。 没运气。 我们试过这个: https : //firebase.google.com/docs/auth/android/account-linking
但似乎我们无法使其与节点 js 一起使用。
不能遵循评论中建议的第三个选项(为不同的应用程序使用不同的项目),因为它们实际上是具有一些共同组件的两个相关应用程序。
在进行了一些故障排除后,我担心我会添加一些更奇怪的东西:1)禁用“每个电子邮件地址一个帐户”选项后,我尝试删除我的帐户,然后使用电子邮件\\密码再次添加它,这成功了。 然后我尝试在应用程序中使用 google 登录:登录失败但在 firebase 中我能够看到一个新的“空”(无电子邮件)用户,具有新的 UID。 然后我删除了所有帐户并尝试在应用程序中使用 google 登录(通常它会在 firebase 中创建帐户),结果:登录失败,创建了空帐户。 删除它,尝试在控制台上手动创建它,结果:“帐户已存在”。
因此,在此之后,我们只是放弃并采用不同的方式来处理身份验证。 希望将来能找到它,因为它对我们真的很有用。
目前,我可以(通过控制台)设置 Google 登录提供程序或邮件/密码提供程序,但不能在同一用户上同时设置。
听起来您启用了每个电子邮件地址一个帐户的设置(这是默认设置)。 启用此功能后,每个电子邮件地址只能有一个帐户。 因此,如果用户首先使用电子邮件+密码登录,然后该用户尝试使用其 Google 帐户登录同一电子邮件,则第二次登录将被拒绝。 这是此设置的预期行为,旨在防止一个用户获得多个帐户。
支持用户通过多个提供商登录的推荐方法是将他们的电子邮件+密码和 Google 帐户链接在一起,如 链接帐户文档中所示。
因此,您必须选择以下选项之一:
所有可用的身份验证方法都是可能的。 但是在使用中,当用户注册了一个提供商时,他/她可以尝试登录/注册另一个提供商。 如果现有用户,那么您应该将凭证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.