2016-12-03 1 views
0

iCloud를 사용하여 영역 객체 서버를 인증하는 방법은 무엇입니까?영역 객체 서버 및 iCloud

login을 "iCloud token"이라고 불러야하지만이 토큰을 얻는 방법을 찾을 수 없다는 것을 알고 있습니다.

지금까지 내가 알 수있는 것은 FileManager.default.ubiquityIdentityToken입니다. docs에 따르면 "현재 사용자의 신원을 나타내는 불투명 한 개체가 포함되어 있습니다". 그것은 작동하지 않는 것 같습니다.

또한 iCloud를 인증으로 사용하는 일반적인 워크 플로는 자격 증명/Facebook/Twitter 로그인 옆에이 단추를 표시합니까? iOS 사용자는 일반적으로 iCloud에 로그인 할 필요가 없기 때문에 조금 이상합니다. 아니면 기본적으로 iCloud로 로그인합니까? 사용자가 다른 공급자와 로그인하면 iCloud에서 로그 아웃합니까? 그 워크 플로우도 이상하게 느껴집니다.

감사

답변

1

영역 개체 서버를 사용 CloudKit에 액세스하려면, 당신은, 공개 키를 생성 애플의 CloudKit 웹 대시 보드에 연결하여 응용 프로그램에 대한 CloudKit 액세스 키를 만들어야합니다. 이 키는 특정 영역에 대한 Realm Object Server의 CloudKit 인증 모듈을 구성하는 데 사용됩니다.

은 자세히에서 https://realm.io/docs/realm-object-server/#icloud

나는 거기가 "정상"이 워크 플로우는 모든 앱에 따라 달라집니다하지만 사용자가 아이 클라우드에 로그인 이미있는 경우는 사용하는 이해가되지 않습니다 생각하지 않는다

다른 신임장.

+0

문서를 읽고 해당 구성을 이미 수행했습니다. 로그인 할 때 전달해야하는 계정 토큰에 대해서만 묻습니다. – Ixx

+0

'CKContainer.fetchUserRecordIDWithCompletionHandler()'메소드로 얻을 수있는 유효한 사용자 레코드 ID를 사용해야합니다.이 PR에서 iCloud 인증 사용 예제를 확인하십시오 : https://github.com/realm/RealmTasks/pull/63 – Dmitry

+0

답장을 보내 주셔서 감사합니다. 이 문제를 재개하자마자 검토를 위해 돌아올 것입니다. – Ixx

3

SyncUser.login에 전달해야하는 액세스 토큰을 가져옵니다. 사용자가 아이 클라우드에 로그인하지 않은 경우에는 사용자의 상호 작용이 필요하지 않습니다, 당신은 오류가 발생합니다 :

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를 사용할 수 있으며, 초기 인증을 수행해야합니다.