令牌过期时使用Angular 刷新firebase令牌

lxkprmvk  于 2023-03-19  发布在  Angular
关注(0)|答案(1)|浏览(160)

我正在做一个网站与Angular ,我实现了firebase的sdk认证与其令牌通过电子邮件/密码.
我们的目标是在用户关闭站点并在一周后重新打开时自动生成一个新的令牌,但我不知道要实现什么功能以及如何实现
我尝试获取令牌并刷新令牌(我成功了),但我不知道使用什么功能来请求一个新的令牌,一旦它过期。我不能从firebase文档中理解。有人能帮助我吗?

wwtsj6pe

wwtsj6pe1#

我找到了一个解决方案。在第一次用户登录后,我保存令牌和刷新令牌,然后在应用程序组件(构造函数中)中创建一个方法,检查本地存储中是否有刷新令牌。如果有刷新令牌,则我调用firebase API,它会向我返回新令牌和新刷新令牌。以下是该方法的示例:

//the method
if (localStorage.getItem("refreshToken") != null) {
      console.log("refresh token not null");
      var request = {
        grant_type: "refresh_token",
        refresh_token: localStorage.getItem("refreshToken")
      };
      console.log("request...");
      this.http.post<RefreshTokenResponse>("https://securetoken.googleapis.com/v1/token?key=[YOUR_KEY]", request)
        .subscribe(x => {
          console.log(x.access_token);
          localStorage.setItem("token", x.access_token)
          console.log(x.refresh_token);
          localStorage.setItem("refreshToken", x.refresh_token);
        });
    }

export interface RefreshTokenResponse{
    access_token:string,
    refresh_token:string
}

export interface RefreshTokenRequest{
    grant_type: string;
    refresh_token:string;
}```

相关问题