How to Link Multiple Auth Providers to an Firebase Account?
我无法成功完成操作,我按照Firebase文档上的指示执行了以下步骤:
使用现有的身份验证提供程序登录使用(我的情况:facebook)。
完成新身份验证提供程序的登录流程,但不包括调用Auth.signInWith方法之一。(我的情况:我想链接电子邮件
如果您要手动将Google和电子邮件/通行证帐户链接到现有的仅限Facebook的firebase用户,则可以执行以下操作:
首先,用户应登录Facebook。
链接Google用户:
1 2
| var provider = new firebase.auth.GoogleAuthProvider();
auth.currentUser.linkWithPopup(provider); |
然后链接电子邮件/密码帐户:
1
| auth.currentUser.linkWithCredential(firebase.auth.EmailAuthProvider.credential(auth.currentUser.email, 'password')) |
所有要链接的帐户必须是新帐户,并且尚未链接。
- 您是手动提到的,是否有其他更自动的链接提供程序的方式?
-
不完全是。我想我没有很好地解释。我的意思是,在开发人员中,它会根据需要进行手动选择(需要Google提供者访问Google日历,升级匿名用户等)。另一种情况是后端服务器出于安全原因需要它。例如,您使用返回[email protected]的Google登录到Firebase。然后,用户使用返回相同电子邮件[email protected]的Facebook在单独的设备上登录。在那种情况下,会抛出一个错误,那就是凭据已在使用中。在这种情况下,您需要链接帐户才能链接两个提供商。
-
@bojeil我看到您使用了linkWithPopup()。那么Firebase教程中提到的linkWithCredential()是什么?
-
@bojeil另外,如果用户在使用Facebook登录后退出,然后又决定使用Google登录怎么办?那我可以将他链接到Google吗?
-
如果您已经具有oauth凭据,则使用linkWithCredential。这样做的好处是您不需要打开弹出窗口或重定向。如果在项目设置中设置"每个电子邮件一个帐户"。如果用户最初使用电子邮件登录,然后使用返回相同电子邮件的OAuth提供程序登录,则后端将抛出该帐户存在的错误。您将必须登录第一个帐户,然后将OAuth提供程序帐户链接到该帐户。
-
Google是一种特殊情况,因为使用Google电子邮件的用户被视为已验证(Google发行了该帐户),并且无需链接即可覆盖现有的Facebook帐户。
-
如果用户的电子邮件相同,我们可以合并帐户而不是保留单独的帐户吗?
-
我对这种情况也很感兴趣。我们是否首先验证电子邮件地址?我想如果用户使用电话号码注册了Facebook,我们就无法真正自动合并帐户。我们需要用户启动此操作。
-
@bojeil抱歉问了所有这些问题,我现在正在实现帐户链接,您的答案会出现在Google搜索中。所以问题是,我正在尝试添加应用内链接,但是linkWithPopup
@bojeil我已经阅读了您的问题,并且找到了使用相同电子邮件帐户登录Google和Facebook登录名的方法。首先,在Firebase中,您需要允许
"每个电子邮件地址有多个帐户"
每个电子邮件地址允许多个帐户
现在,您都可以使用具有" [email protected]"的两个Facebook登录