如何在iOS版Firebase SDK中注销Facebook身份验证

时间:2019-03-10 14:20:10

标签: ios swift firebase firebase-authentication facebook-authentication

我正在iOS项目中使用firebase SDK。我在应用启动后立即创建了一个匿名帐户。

对于Facebook登录,我使用以下代码-

let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)

Auth.auth().currentUser?.linkAndRetrieveData(with: credential)

我应该如何实施注销?我需要用户回到Firebase匿名帐户。

我应该直接致电Firebase注销并创建一个新的匿名帐户吗?

try! Auth.auth().signOut()

Auth.auth().signInAnonymously()

还是我应该调用FBSDKLoginManager的注销方法,这将持久化Firebase匿名用户(在Facebook登录之前在那里)吗?

FBSDKLoginManager().logOut()

还是我应该取消提供者的链接?

Auth.auth().currentUser?.unlink(fromProvider: providerID!)

这里的理想方法是什么?

1 个答案:

答案 0 :(得分:1)

要通过Facebook登录Firebase身份验证,用户需要使用Facebook和Firebase身份验证登录。然后,如果您想通过其他提供商将该用户登录到Firebase身份验证,则只需将其从Firebase身份验证中注销即可。


链接和取消链接提供者提供了另一个用例。假设您要允许用户除了使用他们现在登录的Facebook帐户之外,还可以使用其Google帐户登录。

在这种情况下,您可以让用户登录,为他们的Google帐户创建单独的身份验证凭据,然后link the two providers together。从那时起,无论用户使用Facebook或Google凭据登录,他们都将登录到同一Firebase身份验证帐户。

此后致电unlink,您可以取消其中一个提供商与帐户的关联。


更新,我想我现在已经了解...

  1. 您有一个匿名登录的用户。
  2. 然后,您使用Facebook帐户登录了他们。
  3. 然后您将其从其Facebook帐户中签名。
  4. 现在您要返回到以前的匿名身份验证帐户。

这是不可能的。当您将用户登录Facebook时,他们将从其先前的帐户中注销。而且,当用户退出匿名身份验证后,该帐户将无法恢复。

如果此 是您应用的正常用例,则必须在上述步骤2中将Facebook帐户链接到现有的匿名身份验证帐户(相反,更换它)。如果这样做,您确实可以取消链接Facebook帐户,并返回(仅)匿名身份验证提供程序。