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