如何发送 firebase refreshToken ?反应

How to send firebase refreshToken ? React

我是第一次使用 firebase。 (React 应用程序) 我有 3 个用于登录的社交 Auth Provider。 Google、脸书和苹果。一切都很好,直到这里。但是 1 小时后我的令牌过期,我必须注销并再次登录以刷新我的令牌。我将过期时间保存到我的 localStorage 以检查令牌是否过期,如果是,我手动调用 signOut() 函数。但这并不能解决问题,也不是一个好办法。 我找不到如何在 firebase 中刷新令牌。另外,我是否需要再次检查过期并发送刷新令牌,或者我必须在每次页面刷新时刷新令牌?

import React from 'react'
import { useHistory } from "react-router";
import auth from "../utils/Auth";

export const useSocialAuth = () => {
    
    const history = useHistory();
    const providerFunc = (socialProvider:any) => {
        const provider = socialProvider();
        provider
          .then((result: any) => {
            console.log(result)
            auth.login(() => {
              localStorage.setItem('exp', result.user._delegate.stsTokenManager.expirationTime)
              localStorage.setItem("userID", result.user.uid);
              localStorage.setItem("tocaToken", result.user.multiFactor.user.accessToken);
              history.push("/");
            });
          })
          .catch((err:any) => console.log(err));
    }

      return providerFunc;
  };

我解决了刷新令牌问题。大家需要补充的是:

firebase.auth().currentUser.getIdToken(true)

当您从浏览器进行调用时 .getIdToken(true) 将自动刷新您的令牌。像这样打电话:

firebase.auth().currentUser.getIdToken(/ forceRefresh / true)
.then(function(idToken) {

}).catch(function(error) {

});

更多信息:https://firebase.google.com/docs/reference/js/v8/firebase.User#getidtoken