Как сохранить вход в сеанс после успешной аутентификации пользователя с его учетной записью 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();
      }
    });
  });
});

И когда я вхожу с успехом, там появляется правильная кнопка:

Но каждый раз, когда я обновляю страницу, эта кнопка меняется:

Что делать, чтобы сохранить сеанс и возможность получать записи, пока пользователь не выйдет из системы вручную?

Как проверить, существует ли текущий сеанс (пользователь уже аутентифицировался) и использовать его?

1 ответ

Положите свой токен в apiTokenAuth объект и добавить persist ключ.

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

        apiTokenAuth: {
            apiToken: '<your token>',
            persist: true
        }
    }]
});
Другие вопросы по тегам