8

我无法成功地给做,我也跟着的指示在火力地堡文档以下步骤:如何将多个身份验证提供程序链接到Firebase帐户?

  1. 使用现有的身份验证提供者签名的使用(我的情况:Facebook的)。
  2. 完成新身份验证提供高达登录流程,但不包括调用的Auth.signInWith方法之一(我的情况:我要链接的电子邮件&密码和谷歌的OAuth)。所以这是我不清楚的一步,我使用var provider = new firebase.auth.GoogleAuthProvider();创建了一个新的提供商,我没有做Firebase.auth().signInWithPopup(provider)
  3. 然后让authcredential为谷歌我跑var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);我得到一个未定义的googleUser错误)这个错误似乎是恰当的,因为我还没有签约使用谷歌的Oauth但那是第二步骤陈述了(不签到)
  4. 然后这条命令与Facebook提供商的当前用户链接auth.currentUser.link(credential)

我的理解是当前用户需要链接到我现有的提供者(Facebook)。似乎从未计算出Google的凭证变量。任何具有功能性代码示例的人都会很有帮助。

回答

8

如果您想手动将Google和电子邮件/通行证帐户链接到现有的仅限Facebook的Firebase用户,您可以执行以下操作: 首先,用户应登录Facebook。 链接谷歌的用户:

var provider = new firebase.auth.GoogleAuthProvider(); 
auth.currentUser.linkWithPopup(provider); 

然后链接的电子邮件/通帐户:

auth.currentUser.linkWithCredential(firebase.auth.EmailAuthProvider.credential(auth.currentUser.email, 'password')) 

所有这些帐户链接必须是新的,尚未联系。

+0

你提到的手动,有没有一个不同的更自动的方式来链接提供商? – jasan

+1

不完全。我想我没有解释得很好。我的意思是手动,因为开发人员会根据一些需求(需要谷歌提供商访问谷歌日历,升级匿名用户等)选择链接。另一种情况是后端服务器出于安全原因需要它。例如,您使用google返回[email protected],登录到firebase。用户然后使用Facebook返回相同的电子邮件[email protected]在单独的设备上登录。在这种情况下,会出现证书已被使用的错误。在这种情况下,您需要链接帐户才能链接两个提供商。 – bojeil

+0

@bojeil我看到你使用了'linkWithPopup()'。然后,[Firebase教程]中提到的linkWithCredential()是什么(https://firebase.google.com/docs/auth/android/account-linking#link-auth-provider-credentials-to-a-user -帐户)? –

相关问题