0

背景:如何正确链接Firebase中的不同身份验证帐户IOS

我正在开发一个使用Firebase作为后端的IOS应用程序。 有3个认证: 1:密码和电子邮件 2:脸谱 3:谷歌

我已经检查了option选项 “每个帐户一个电子邮件”。

的情况是:

说,如果我先登录与验证提供者之一,后来,注销,并希望与任何其他两种验证供应商注册。如果当前提供商的关联电子邮件与以前相同,我将收到“电子邮件地址已被使用”错误。在这种情况下,我想将当前的Auth帐户与以前的帐户关联起来。

我知道我需要调用linkWithCredential:completion:方法来链接帐户。但我首先需要登录以前的帐户,但我怎么能告诉哪个帐户登录?例如,如果我通过Facebook登录并收到“正在使用的电子邮件”错误,那么我现在应该如何知道是否应该通过Google或电子邮件/密码登录?

一个有趣的事情是,如果我使用Facebook或电子邮件/密码先登录,然后用Google登录,firebase将自动处理链接,但默认行为是用Google覆盖以前的Auth提供商并保留UID ...

我发现了一个有用的帖子How to manage users' different authentication in firebase

但它只能处理简单的情况下验证只有两个。

回答

1

当您收到凭证已存在错误时,您已经拥有该电子邮件,那么您将使用该电子邮件呼叫fetchProvidersForEmail,该电子邮件将查找与该电子邮件关联的提供商ID。然后您使用其中一个提供商登录用户。在完成使用现有帐户登录后,您可以使用导致发生错误的原始凭证拨打linkWithCredential:completion:。这会导致帐户链接。用户下次尝试登录时,他们将能够通过任一提供商登录到同一用户。

检查FirebaseUI-iOS已经为您处理整个流程。您还可以查看源代码,了解他们如何处理这种情况:https://github.com/firebase/FirebaseUI-iOS

相关问题