我正在尝试链接 Facebook 和 Google。所以,场景是这样的:
我已经通过 Google 进行了身份验证。所以,现在我正在登录 Facebook,使用之前在 Google 上使用的相同电子邮件 ID。因此,我收到帐户存在不同凭据的错误。而且,我这样做了:
func fetchUserInfo()
{
Auth.auth().signInAndRetrieveData(with:FacebookAuthProvider.credential(withAccessToken: (FBSDKAccessToken.current().tokenString)!), completion: { (result, error) in
if let error = AuthErrorCode.init(rawValue: error!._code)
{
switch error
{
case .accountExistsWithDifferentCredential :
let credential = FacebookAuthProvider.credential(withAccessToken: (FBSDKAccessToken.current()?.tokenString)!)
Auth.auth().currentUser?.linkAndRetrieveData(with: credential, completion: { (result, error) in
if let error = error
{
print("Unable to link Facebook Account", error.localizedDescription)
}
else
{
NavigationHelper.shared.moveToHome(fromVC: self)
}
})
default: break
}
}
else
{
GeneralHelper.shared.keepLoggedIn()
if let currentUser = Auth.auth().currentUser
{
print(currentUser.email!)
}
NavigationHelper.shared.moveToHome(fromVC: self)
}
})
}
这里 Firebase 文档说我们只需链接 currentUser
并检索数据。但是,我面临的问题是 currentUser 始终为零。那么,如何获取当前用户呢?我几个月前就已经尝试过了,然后我就能够链接 Facebook、Google 和电子邮件。我需要从 Google signInAndRetrieve
获取数据才能获取 currentUser
吗?
最佳答案
错误“帐户存在不同的凭据”是因为默认情况下,Firebase 不允许对两种(或更多)不同的登录方法使用相同的电子邮件地址。您需要启用此选项。
1 - 转到身份验证> 登录方法
2 - 向下滚动到高级:每个电子邮件地址多个帐户
3 - 将选项更改为允许使用同一电子邮件地址创建多个帐户
仅供引用:您需要为应用程序中的每个登录方法执行整个登录过程。每个方法都有自己的凭据。
希望这有帮助。
关于ios - 无法在 Firebase 身份验证中链接 Facebook 和 Google,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52947793/