2016-12-03 20 views
0

Как использовать iCloud для аутентификации с помощью сервера объектов Realm?Сервер объектов Realm и iCloud

Я знаю, что мне нужно позвонить login с помощью «токена iCloud», но не сможет найти, как получить этот токен.

До сих пор я мог найти следующее: FileManager.default.ubiquityIdentityToken, который согласно документам «содержит непрозрачный объект, представляющий личность текущего пользователя». Это не работает.

Кроме того, что является обычным рабочим процессом для использования iCloud в качестве аутентификации, я покажу кнопку для этого рядом с учетными данными/Facebook/Twitter? Это немного странно, поскольку пользователям iOS обычно не нужно входить в iCloud. Или я могу войти в iCloud по умолчанию, и если пользователь входит в систему с другим провайдером, я выхожу из iCloud? Этот рабочий процесс также кажется странным.

Благодаря

ответ

1

Чтобы получить доступ CloudKit с помощью Realm Object Server, вам нужно будет создать открытый ключ, а затем подключиться к веб-панеле CloudKit компании Apple и создать ключ доступа CloudKit для вашего приложения. Эти ключи затем будут использоваться для настройки модуля аутентификации CloudKit Realm Object Server для определенного региона.

Узнайте больше на https://realm.io/docs/realm-object-server/#icloud

Я не думаю, что есть «нормальный» рабочий процесс, все зависит от вашего приложения, но если ваш пользователь уже вошел в систему с ICloud это не имеет смысла использовать другие полномочия.

+0

Я прочитал документы и уже сделал эту конфигурацию. Я только прошу про токен учетной записи, который я должен передать при вызове login. – Ixx

+0

Вы должны использовать действительный идентификатор записи пользователя, который вы можете получить с помощью метода 'CKContainer.fetchUserRecordIDWithCompletionHandler()', проверьте этот PR для примера использования аутентификации iCloud: https://github.com/realm/RealmTasks/pull/63 – Dmitry

+0

Спасибо за ваш ответ, мне пришлось отложить это. Как только я вернусь к этому, я вернусь к обзору. – Ixx

3

Это позволит получить токен доступа, который необходимо передать в 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.