微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 Firebase VerifyToken 获取用户显示名称第 2 部分

如何解决从 Firebase VerifyToken 获取用户显示名称第 2 部分

我和另一个同名帖子的情况一样。我有一个自定义后端 (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;
};

有没有办法让它显示而无需用户注销并重新登录

解决方法

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

  1. 等待当前 ID 令牌过期,SDK 会自动获取新的令牌。
  2. 退出和登录,循环使用 ID 令牌。
  3. 在客户端 SDK 上明确请求刷新 ID 令牌。如果您使用的是 JS SDK,它看起来像这样:
firebase.auth().currentUser.getIdToken(/* forceRefresh */ true)

欲知更多详情:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?