1

如何使用 iCloud 向 Realm 对象服务器进行身份验证?

我知道我必须login使用“iCloud 令牌”打电话,但无法找到如何获取此令牌。

到目前为止,我能找到的是:FileManager.default.ubiquityIdentityToken根据文档,它“包含一个表示当前用户身份的不透明对象”。这似乎行不通。

此外,使用 iCloud 作为身份验证的正常工作流程是什么,我是否在凭据/Facebook/Twitter 登录旁边显示一个按钮?感觉有点奇怪,因为 iOS 用户通常不必登录 iCloud。或者我是否默认使用 iCloud 登录,如果用户使用其他提供商登录,我会从 iCloud 注销?这种工作流程也感觉很奇怪。

谢谢

4

2 回答 2

4

这将获取您需要传递给的访问令牌SyncUser.login。无需用户交互,如果用户未登录 iCloud,您将收到错误消息:

func fetchCloudKitAccessToken(completion: @escaping (_ accessToken: String?, _ error: Error?) -> Void) {
      let container = CKContainer.default()
      container.fetchUserRecordID { (recordID, error) in
          let userAccessToken = recordID?.recordName
          completion(userAccessToken, error)
      }
  }

这仅需要为初始身份验证完成,之后您可以使用SyncUser.current.

于 2016-12-31T19:23:30.377 回答
1

为了使用 Realm Object Server 访问 CloudKit,您需要创建一个公钥,然后连接到 Apple 的 CloudKit Web 仪表板并为您的应用程序创建一个 CloudKit 访问密钥。然后,这些密钥将用于为特定领域配置领域对象服务器的 CloudKit 身份验证模块。

在https://realm.io/docs/realm-object-server/#icloud了解更多信息

我不认为有一个“正常”的工作流程,一切都取决于你的应用程序,但如果你的用户已经使用 iCloud 登录,那么使用其他凭据是没有意义的。

于 2016-12-05T09:20:48.387 回答