2017-09-21 6 views
0

これは私のサイトがロードされたときに私が呼んでいるものです:ユーザーが自分のiCloudアカウントで認証された後、セッションにログインする方法は?

(function($){})(window.jQuery); 

$(document).ready(function() { 

    window.addEventListener('cloudkitloaded', function() { 

    CloudKit.configure({ 
     containers: [{ 
     containerIdentifier: 'iCloud.pl.blueworld.fieldservice', 
     apiToken: 'fc363369412ad6c99020e7e0ed3e2be121008e34534cff7debe1f4f7f829d152', 
     environment: 'production' 
     }] 
    }); 

    var container = CloudKit.getDefaultContainer(); 
    var privateDB = container.privateCloudDatabase; 

    this.gotoAuthenticatedState = function(userInfo) { 

     if(userInfo.isDiscoverable) { 
     //success 
     } else { 
     //failure 
     } 

     container 
     .whenUserSignsOut() 
     .then(this.gotoUnauthenticatedState); 
    }; 

    this.gotoUnauthenticatedState = function(error) { 
     //do sth of sign out 

     container 
     .whenUserSignsIn() 
     .then(this.gotoAuthenticatedState) 
     .catch(this.gotoUnauthenticatedState); 
    }; 

    container.setUpAuth().then(function(userInfo) { 

     if(userInfo) { 
      this.gotoAuthenticatedState(userInfo); 
     } else { 
      this.gotoUnauthenticatedState(); 
     } 
    }); 
    }); 
}); 

そして、私は成功してログインするとき、正しいボタンが表示されます。

enter image description here

しかし、毎回私は、このボタンページを更新変更:

enter image description here

sessiを保つために何をすべきかユーザーが手動でログアウトするまでレコードを取得できますか?

現在のセッション(既に認証されているユーザー)が存在し、それを使用しているかどうかを確認する方法はありますか?

答えて

0

トークンをapiTokenAuthオブジェクト内に置き、persistというキーを追加します。

CloudKit.configure({ 
    containers: [{ 
     containerIdentifier: '<your container>', 
     environment: 'production', 

     apiTokenAuth: { 
      apiToken: '<your token>', 
      persist: true 
     } 
    }] 
}); 
関連する問題