Googen Sig-in и с токеном обновления - PullRequest
0 голосов
/ 11 октября 2019

Я создаю угловое приложение, в котором у меня есть метод для сохранения объекта в локальном хранилище, а другой - для его извлечения. Этот объект является 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 продолжал сеанс обновлять свой токен?

Спасибо!

...