Я создаю угловое приложение, в котором у меня есть метод для сохранения объекта в локальном хранилище, а другой - для его извлечения. Этот объект является GoogleUser . Моя проблема в том, что когда я получаю пользователя из localalstorage, его методы не работают. Я читал, что это из-за JSON.parse , который, кажется, не делает то, что я думал, что сделал. Мой код такой:
import { Injectable } from '@angular/core';
import GoogleUser = gapi.auth2.GoogleUser;
@Injectable({
providedIn: 'root'
})
export class SesionService {
private google: GoogleUser;
constructor() { }
public setUser(user: Usuario): void {
sessionStorage.setItem("usuario", JSON.stringify(user));
}
public getUser(): Usuario {
const usuario: Usuario = JSON.parse(sessionStorage.getItem("usuario"));
if (!usuario) {
throw new Error('No hay usuario logueado');
}
return usuario;
}
public setAccessToken(accessToken: string): void {
sessionStorage.setItem("accessToken", accessToken);
}
public getAccessToken(): string {
const token: string = sessionStorage.getItem("accessToken");
if (!token) {
throw new Error('No hay token, autenticación necesaria');
}
return token;
}
public getGoogleUser(): GoogleUser {
const usuarioStorage: any = JSON.parse(sessionStorage.getItem("usuarioGoogle"));
const usuario: GoogleUser = usuarioStorage
if (!usuario) {
throw new Error('No hay usuario logueado de google');
}
return usuario;
}
public setGoogleUser(googleUser: GoogleUser): void {
sessionStorage.setItem("usuarioGoogle", JSON.stringify(googleUser));
}
}
и затем я делаю это, чтобы обновить мой токен:
let user: GoogleUser = this._sesionService.getGoogleUser()
user.reloadAuthResponse().then(e =>{
console.log("NUEVO TOKEN")
console.log(e)
})
Я получаю эту ошибку:
user.reloadAuthResponse() is not a function
Я имеюпрочитайте, что это потому, что JSON.parese не дает мне фактический объект.
Так, как я могу сделать так, чтобы мой GoogleUser продолжал сеанс обновлять свой токен?
Спасибо!