在Firebase iOS中链接oAuth提供程序

时间:2016-10-21 16:36:53

标签: ios firebase oauth firebase-authentication

我是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

2 个答案:

答案 0 :(得分:2)

我相信你对说明感到困惑。在firebase文档中,它读取

将身份验证提供程序凭据链接到现有用户帐户:

  1. 使用任何身份验证提供程序或方法登录用户。
  2. 完成新身份验证提供程序的登录流程,但不包括调用其中一个FIRAuth.signInWith方法。例如,获取用户的Google ID令牌,Facebook访问令牌或电子邮件和密码。

  3. 获取新身份验证提供程序的FIRAuthCredential

  4. 所以你不应该调用FIRAuth.signInWith方法。我还应该指出,您要创建一个指向现有帐户的链接,因此您应该首先登录,然后才能链接它。这就是你应该有一个currentUser的原因。

答案 1 :(得分:0)

这是因为取消选中"每个电子邮件地址的多个帐户设置了firebase设置"来自firebase控制台。