Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 域同步Facebook身份验证不工作_Swift_Realm_Realm Mobile Platform - Fatal编程技术网

Swift 域同步Facebook身份验证不工作

Swift 域同步Facebook身份验证不工作,swift,realm,realm-mobile-platform,Swift,Realm,Realm Mobile Platform,我试图在Realm Sync中启用Facebook身份验证,但登录时不断出现错误 我一直在使用这些指南: 我拥有Facebook API/SDK提供的访问令牌,使我能够登录/注册用户 当我使用Realm的库使用Facebook访问令牌登录用户时,我收到一个错误,指出“provider”参数无效,但该参数由Realm自己的类定义 我已使用电子邮件和密码成功验证了用户身份,因此我是否需要在Facebook/Realm Sync上设置其他内容?似乎Facebook身份验证在Realm Sync中不

我试图在Realm Sync中启用Facebook身份验证,但登录时不断出现错误

我一直在使用这些指南:

  • 我拥有Facebook API/SDK提供的访问令牌,使我能够登录/注册用户

    当我使用Realm的库使用Facebook访问令牌登录用户时,我收到一个错误,指出“provider”参数无效,但该参数由Realm自己的类定义

    我已使用电子邮件和密码成功验证了用户身份,因此我是否需要在Facebook/Realm Sync上设置其他内容?似乎Facebook身份验证在Realm Sync中不起作用,而且上面的帮助文件非常无用

    身份验证代码

    func authenticateWithFacebook(facebookToken: String, completion: @escaping (RealmAuthenticationResult) -> ()) {
        let credentials = SyncCredentials.facebook(token: facebookToken)
    
        print("------FACEBOOK LOGIN-------")
        print("Token: \(facebookToken)")
    
        login(credentials) { (result, userId) in
            completion(result)
        }
    }
    
    private func login(_ credentials: SyncCredentials, completion: @escaping (RealmAuthenticationResult, String?) -> ()) {
    
        SyncUser.logIn(with: credentials, server: RealmConnection.AUTH_URL, onCompletion: { (user, err) in
            if let _ = user {
                print("User has logged in/signed up")
                return completion(RealmAuthenticationResult.success(true), user?.identity)
            } else if let error = err {
                print(error.localizedDescription)
                return completion(RealmAuthenticationResult.failure(error), user?.identity)
            }
        })
    }
    
    错误

    错误域=io.realm.sync.auth Code=601“您的请求参数没有 未验证。提供程序:参数“provider”无效!“ UserInfo={NSLocalizedDescription=您的请求参数未被删除 validate.provider:无效参数“provider”!;}

    我尝试过的其他事情

    我尝试过直接实例化基本提供程序类“RLMIdentityProvider”并用它创建SyncCredentials,但没有成功


    解决方法是从Facebook API/SDK获取帐户信息,并使用帐户的电子邮件登录/注册用户名/密码设置。然而,这似乎使Facebook身份验证变得多余。

    领域文档链接已经过时。更改了很多内容,请参阅3.16.0文档(或更高版本)

    目前,密码、JWT和Firebase是唯一的身份验证选项,Firebase身份验证是一个非常可靠的解决方案。使用同步领域->身份验证部分的领域文档中也介绍了集成Firebase。我不会链接它,因为文档现在经常更新

    正如Realm团队(多次)所述,由于其他公司(如Firebase)处理得很好,广泛的身份验证选项不是优先考虑的

    领域论坛上有很多帖子都在谈论这一点,但伊恩对此的回应非常简洁

    我们已经并将继续优先考虑 流动的

    然后

    这就是为什么我们建议生产应用程序应该外包用户 对专门从事这些业务的公司进行管理和认证 特征


    太好了,谢谢你的解释;我不知道我在使用旧文档!我已切换到使用Firebase进行身份验证。