【问题标题】:Unable to link Facebook and Google in Firebase Authentication无法在 Firebase 身份验证中链接 Facebook 和 Google
【发布时间】:2019-03-27 14:49:12
【问题描述】:

我正在尝试链接 Facebook 和 Google。所以,场景是这样的:

我已经通过 Google 进行了身份验证。所以,现在我登录 Facebook,拥有与谷歌之前使用的相同的电子邮件 ID。所以,我得到了 account Exists with a different credential 的错误。而且,我这样做了:

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、谷歌和电子邮件。是否,我需要 signInAndRetrieve 来自 Google 的数据才能获得 currentUser

【问题讨论】:

  • 您需要先将用户登录到 Google,然后将 Facebook 凭据链接到它,以便合并两个帐户。下次用户可以使用其中任何一个登录时。
  • 是的,我已经这样做并关联了帐户。

标签: ios iphone swift firebase firebase-authentication


【解决方案1】:

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

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

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

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

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

希望这会有所帮助。

【讨论】:

  • 我认为更好的方法是要求用户使用以前的方法登录,然后静默链接他们的帐户。我认为最好有一封电子邮件,然后将它们与其他凭据链接。
  • @Rob13 我认为假设两个平台的用户电子邮件相同不是一个好主意。此外,如果您没有正确创建会话,则无法与平台交互;获取用户真实姓名、生日、分享链接等
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2019-06-26
相关资源
最近更新 更多