Хорошо, я собираюсь вырвать мои волосы (что от этого осталось).Всякий раз, когда я запускаю приложение с нуля после очистки всех файлов cookie / элементов хранения, я проверяю определенные элементы ... таким образом, проверяя, вошел ли пользователь в приложение или нет.
После того, как он вошел в систему через firebase(что успешно), он возвращается обратно в приложение, где мы затем устанавливаем UID и получаем токен Google для наших вызовов API.Все значения подтверждены и успешно извлекаются.
Мы устанавливаем их через поставщика услуг хранения.Как только они установлены, мы пытаемся вызвать что-то из нашего API, для этого нужен токен Google.Когда мы пытаемся извлечь это из хранилища, его там нет.Однако, если я просто обновлю свой браузер (не удаляя файлы cookie и т. Д.) На вкладке отладка / приложение, волшебным образом будут присутствовать значения localdb, и теперь все работает.
Вот провайдер хранилища:
@Injectable()
export class StorageProvider {
constructor(public http: HttpClient, public storage: Storage) {
console.log('Hello StorageProvider Provider');
}
public set(settingName,value):Promise<any>{
return this.storage.ready().then(() => {
this.storage.set(`setting:${ settingName }`,value).then(() => {
Promise.resolve(true);
})
.catch(err => {
Promise.reject(err);
})
})
.catch(err => {
console.log("ERROR Storage Not Ready: " + err);
})
} public async get(settingName){
return this.storage.ready().then(() => {
this.storage.get(`setting:${ settingName }`).then((res) => {
Promise.resolve(res);
})
.catch(err => {
Promise.reject(err);
})
})
.catch( err => {
console.log("Storage Get Error");
return Promise.reject(err);
}
);
}
Может кто-нибудь увидеть, что я делаю не так?Вот краткий фрагмент того, как мы его называем, который всегда возвращает No Token Set перед CMD + R. Как только я сделаю CMD + R, все будет в порядке, и все будет работать безупречно.
await this.storage.get('Token').then((results) => {
this.token = results;
})
if(this.token == null)
{
return Promise.reject("No Token Set");
}