无法在Firebase身份验证中链接Facebook和Google

时间:2018-10-23 11:18:07

标签: ios iphone swift firebase firebase-authentication

我正在尝试链接Facebook和Google。因此,情况是这样的:

我已经通过Google身份验证。所以,现在我登录Facebook,使用的电子邮件ID与Google之前使用的相同。因此,我收到了具有不同凭证的帐户存在错误。而且,我做到了:

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和Email。是吗,我需要signInAndRetrieve来自Google的数据才能获得currentUser

1 个答案:

答案 0 :(得分:0)

错误“帐户使用不同的凭据存在”是因为,默认情况下,Firebase不允许将相同的电子邮件地址用于两个(或多个)不同的Sing In方法。您需要启用此选项。

1-转到身份验证> 登录方式

Authentication > Sign-in method

2-向下滚动到高级:每个电子邮件地址多个帐户

Advanced

3-将选项更改为允许创建具有相同电子邮件地址的多个帐户

enter image description here

仅供参考:您需要为应用程序中的每个Sign In方法执行整个登录过程。每个方法都有自己的凭据。

希望这会有所帮助。