2016-12-03 3 views
0

iCloudを使用してRealmオブジェクトサーバーで認証する方法を教えてください。RealmオブジェクトサーバーとiCloud

私はloginに「iCloudトークン」と呼ぶ必要がありますが、このトークンを取得する方法を見つけることはできません。

これまでのところ、これは次のとおりです。FileManager.default.ubiquityIdentityToken docsによると、 "現在のユーザーの身元を表す不透明なオブジェクトが含まれています"。それはうまくいかないようです。

また、認証としてiCloudを使用する通常のワークフローは、資格情報/ Facebook/Twitterログインの隣にボタンを表示しますか? iOSユーザーは通常iCloudにログインする必要がないので、少し奇妙です。または、デフォルトでiCloudでログインし、別のプロバイダにログインした場合、iCloudからログアウトしますか?そのワークフローも変だと感じています。

おかげ

答えて

1

レルムオブジェクト・サーバを使用してCloudKitにアクセスするためには、あなたは、AppleのCloudKitウェブダッシュボードに接続し、アプリケーションのCloudKitアクセスキーを作成し、その後、公開鍵を作成する必要があります。これらのキーを使用して、特定のレルムのレルムオブジェクトサーバのCloudKit認証モジュールを設定します。

私は「普通の」ワークフローがないと思うhttps://realm.io/docs/realm-object-server/#icloud

で詳細をご覧ください、すべてはあなたのアプリケーションに依存しますが、ユーザーが既にiCloud上でログインしている場合には、使用しても意味がありません。別の資格情報

+0

私はドキュメントを読んで、その設定をしました。私は、ログインを呼び出すときに渡さなければならないアカウントトークンについてのみ尋ねています。 – Ixx

+0

'CKContainer.fetchUserRecordIDWithCompletionHandler()'メソッドで取得できる有効なユーザレコードIDを使用する必要があります。この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を使用することができ、初期認証のために行われる必要があります。

関連する問題