【问题标题】:Get User Display Name from Firebase VerifyToken (part2)从 Firebase VerifyToken 获取用户显示名称(第 2 部分)
【发布时间】:2021-03-18 00:13:37
【问题描述】:

我的情况与另一个标题相同的帖子相同。我有一个自定义后端(node+express),我能够更新前端的 displayName。但是,在查看后端的 DecodedIdToken 时,注册用户时没有“名称”。我需要用户的显示名称,以便它可以与后端的其他客户端同步。

如果我注销新注册的用户并重新登录,DecodedIdToken 现在会在后端显示“名称”。

客户端代码:

firebase
  .auth()
  .createUserWithEmailAndPassword(email, password)
  .then(dataBeforeEmail => {
    firebase.auth().onAuthStateChanged(function(user) {
      user.sendEmailVerification();
      user.updateProfile({displayName: displayName})
    });
  })
 .then(dataAfterEmail => {
    firebase.auth().onAuthStateChanged(async function(user) {
      if (user) {
        // Sign up successful
        dispatch({
          type: REGISTER_SUCCESS,
          payload:user
        });

        const header = await tokenConfig();
       
        try{
          axios
          .post('/api/auth/',{}, header)
          .then(res=>
            dispatch({
              type: REGISTER_SUCCESS,
              payload: res.data
            })
            (console.log(res.data))
            )
        }
        catch(err) {
          dispatch({
            type: REGISTER_FAIL,
            payload:
                "Something went wrong, we couldn't create your account. Please try again."
            });
          };

export const tokenConfig = async () => {
  const user = firebase.auth().currentUser;
  const token = user && (await user.getIdToken());
 const config = {
    headers: {
      'Content-Type': 'application/json',
      Authorization: `Bearer ${token}`,
    },
  };
  return config;
};

有没有办法在不让用户注销并重新登录的情况下显示它?

【问题讨论】:

    标签: node.js firebase firebase-authentication firebase-admin


    【解决方案1】:

    这是因为客户端 SDK 处理 ID 令牌的方式。 ID 令牌最多缓存一个小时。因此,在用户帐户的任何更改反映在 ID 令牌上之前,您必须执行以下操作之一:

    1. 等待当前 ID 令牌过期,SDK 会自动获取一个新令牌。
    2. 退出和登录,循环退出 ID 令牌。
    3. 在客户端 SDK 上显式请求 ID 令牌刷新。如果您使用的是 JS SDK,这将如下所示:
    firebase.auth().currentUser.getIdToken(/* forceRefresh */ true)
    

    更多详情:

    【讨论】:

    • 太棒了,(3) 就像一个魅力。非常感谢! ?
    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多