我是Firebase和iOS的新手,我想知道是否有人知道如何链接多个oAuth提供商。我按照Firebase文档尝试实现此功能:
func firebaseSignInWithLink(credential: FIRAuthCredential) {
FIRAuth.auth()?.signIn(with: credential, completion: { (user, error) in
if error != nil {
debugPrint("APP: there has been an error signing into firebase, perhaps another account with same email")
debugPrint("APP: \(error)")
// if existing email, try linking
FIRAuth.auth()?.currentUser?.link(with: credential, completion: { (user, error) in
if error != nil {
debugPrint("APP: there has been an error signing into firebase")
debugPrint("APP: \(error)")
}
else {
debugPrint("APP: successfully signed into firebase")
}
})
}
else {
debugPrint("APP: successfully signed into firebase")
}
})
}
尽管调用了上面的FIRAuth.auth()?.currentUser?.link
,但debugPrint("APP: \(error)")
函数永远不会被调用。因为这不起作用,我不断收到以下错误:
可选(错误域= FIRAuthErrorDomain代码= 17007 \“电子邮件地址已被其他帐户使用。\”UserInfo = {NSLocalizedDescription =该电子邮件地址已被其他帐户使用。,error_name = ERROR_EMAIL_ALREADY_IN_USE,FIRAuthErrorUserInfoEmailKey = example@gmail.com})“
任何帮助将不胜感激!谢谢:D
答案 0 :(得分:2)
我相信你对说明感到困惑。在firebase文档中,它读取
将身份验证提供程序凭据链接到现有用户帐户:
完成新身份验证提供程序的登录流程,但不包括调用其中一个FIRAuth.signInWith方法。例如,获取用户的Google ID令牌,Facebook访问令牌或电子邮件和密码。
获取新身份验证提供程序的FIRAuthCredential
所以你不应该调用FIRAuth.signInWith方法。我还应该指出,您要创建一个指向现有帐户的链接,因此您应该首先登录,然后才能链接它。这就是你应该有一个currentUser的原因。
答案 1 :(得分:0)
这是因为取消选中"每个电子邮件地址的多个帐户设置了firebase设置"来自firebase控制台。