我正在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!)
这里的理想方法是什么?
答案 0 :(得分:1)
要通过Facebook登录Firebase身份验证,用户需要使用Facebook和Firebase身份验证登录。然后,如果您想通过其他提供商将该用户登录到Firebase身份验证,则只需将其从Firebase身份验证中注销即可。
链接和取消链接提供者提供了另一个用例。假设您要允许用户除了使用他们现在登录的Facebook帐户之外,还可以使用其Google帐户登录。
在这种情况下,您可以让用户登录,为他们的Google帐户创建单独的身份验证凭据,然后link the two providers together。从那时起,无论用户使用Facebook或Google凭据登录,他们都将登录到同一Firebase身份验证帐户。
此后致电unlink
,您可以取消其中一个提供商与帐户的关联。
更新,我想我现在已经了解...
这是不可能的。当您将用户登录Facebook时,他们将从其先前的帐户中注销。而且,当用户退出匿名身份验证后,该帐户将无法恢复。
如果此 是您应用的正常用例,则必须在上述步骤2中将Facebook帐户链接到现有的匿名身份验证帐户(相反,更换它)。如果这样做,您确实可以取消链接Facebook帐户,并返回(仅)匿名身份验证提供程序。