【问题标题】:Realm Sync Facebook Authentication not working领域同步 Facebook 身份验证不起作用
【发布时间】:2019-12-31 10:23:23
【问题描述】:

我正在尝试在 Realm Sync 中启用 Facebook 身份验证,但登录时不断收到错误消息。

我一直在使用这些指南:

  1. https://docs.realm.io/sync/v/3.x/using-synced-realms/user-authentication/additional-providers#facebook

  2. https://docs.realm.io/sync/v/3.x/self-hosted/customize/authentication/included-third-party-auth-providers/facebook-authentication

我拥有 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)
        }
    })
}

错误

Error Domain=io.realm.sync.auth Code=601 "你的请求参数没有 不验证。提供者:参数“提供者”无效!;” UserInfo={NSLocalizedDescription=您的请求参数没有 证实。提供者:参数“提供者”无效!;}

我尝试过的其他方法

我已尝试直接实例化基本提供程序类“RLMIdentityProvider”并使用它创建 SyncCredentials,但没有骰子。

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

【问题讨论】:

    标签: swift realm realm-mobile-platform


    【解决方案1】:

    Realm 文档链接已过时。请参阅 3.16.0 文档(或更高版本),因为有很多更改。

    目前 Password、JWT 和 Firebase 是唯一的身份验证选项,Firebase 身份验证是一个非常可靠的解决方案。集成 Firebase 也包含在使用 Sync'd Realms -> Authentication 部分的领域文档中。我不会链接它,因为现在文档经常更新。

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

    Realm 论坛上有很多帖子谈到了这一点,但 Ian 对 this question 的回复非常简洁。

    我们已经并将继续优先考虑同步功能 移动

    然后

    这就是我们建议生产应用应外包用户的原因 对专门从事这些业务的公司进行管理和认证 功能。

    【讨论】:

    • 太好了,感谢您的解释;我不知道我使用的是旧文档!我已切换到使用 Firebase 进行身份验证。
    猜你喜欢
    • 2015-02-10
    • 2012-04-14
    • 2015-06-26
    • 2016-09-24
    • 2015-08-21
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多