Сервер объектов Realm и iCloud
Как я могу использовать iCloud для аутентификации на сервере объектов Realm?
Я знаю, что должен позвонить login
с "токеном iCloud", но не может найти, как получить этот токен.
Пока что я могу найти это: FileManager.default.ubiquityIdentityToken
который согласно документам "содержит непрозрачный объект, представляющий личность текущего пользователя". Это не похоже на работу.
Кроме того, каков нормальный рабочий процесс для использования iCloud в качестве аутентификации, я показываю кнопку для этого рядом с учетными данными /Facebook/Twitter для входа? Это немного странно, поскольку пользователям iOS обычно не нужно входить в iCloud. Или я по умолчанию подключаюсь к iCloud, и если пользователь входит в систему с другим провайдером, я выхожу из iCloud? Этот рабочий процесс также кажется странным.
Спасибо
2 ответа
Это приведет к получению токена доступа, который необходимо передать 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
,
Чтобы получить доступ к CloudKit с помощью Realm Object Server, вам нужно будет создать открытый ключ, затем подключиться к веб-панели Apple CloudKit и создать ключ доступа CloudKit для вашего приложения. Эти ключи будут затем использоваться для настройки модуля проверки подлинности CloudKit сервера объектов Realm для конкретной области.
Узнайте больше на https://realm.io/docs/realm-object-server/
Я не думаю, что есть "нормальный" рабочий процесс, все зависит от вашего приложения, но если ваш пользователь уже вошел в систему с iCloud, нет смысла использовать другие учетные данные.