Firebase登录但CustomToken未过期?

Firebase登录但CustomToken未过期?,firebase,firebase-admin,Firebase,Firebase Admin,问这个我觉得很愚蠢,但我还是要问 我还是firebase的新手,现在尝试使用signInWithCustomToken以管理员身份编辑我的用户数据 这是我的firebase数据库实时规则 { "rules": { ".read": "auth != null", "users": { "$user_id": { ".read": true,

问这个我觉得很愚蠢,但我还是要问

我还是firebase的新手,现在尝试使用signInWithCustomToken以管理员身份编辑我的用户数据 这是我的firebase数据库实时规则

{
          "rules": {
            ".read": "auth != null",
            "users": {
              "$user_id": {
                ".read": true,
                ".write": "$user_id == auth.uid"
              }
            }
          }
        }
这是我的客户端(?)代码,我使用ajax向CI控制器发送用户名和密码,然后控制器将从那里向nodejs发送值

    $.ajax({
        type: "POST",
        url: "Umum/senddata/"+user+"/"+pass
        }).done(function( msg ) {
            firebase.auth().signInWithCustomToken(msg).catch(function(error) {
                  // Handle Errors here.
                  var errorCode = error.code;
                  var errorMessage = error.message;
                  if (errorCode === 'auth/invalid-custom-token') {
                    alert('The token you provided is not valid.');
} else {
                                console.error(error);
                                }
                            });
                        }) 

                    }); 
这是我的节点js代码。首先,我需要检查firebase中是否存在用户名,然后获取UID以创建customtoken,然后将customtoken发送回客户端

app.post('/sendata', function(req, res) {
    var content = req.body;
    admin.database().ref('/admins').orderByChild('username').equalTo(content.username).once('value').then(function(snapshot) {
        snapshot.forEach(function(childSnapshot) {

            admin.auth().createCustomToken(childSnapshot.val().adminuid).then(function(customToken) {
                console.log("customtoken : " + customToken);
                //to-do: forward the message to the connected nodes.
                res.end(customToken);
                admin.auth().verifyIdToken(customToken).then(function(decodedToken) {
                    var uid = decodedToken.uid;
                    console.log("uidnya : " + uid);
                    // ...
                }).catch(function(error) {
                    // Handle error
                });
            }).catch(function(error) {
                console.log("Error creating custom token:", error);
            });
        });
    });
});
现在的问题是,人们说代币将在1小时后过期。 他们所说的过期是什么意思?过期后,他们不能编辑用户数据或什么? 因为我的仍然可以工作,我仍然能够编辑我的用户数据,即使在1小时后没有重新登录。 或者我的带有CustomToken的登录错误? 但我尝试了console.log,它返回了我用来登录的正确用户
如果令牌过期,会发生什么

您将自定义标记与ID标记混淆

返回到客户端的自定义令牌在一小时后过期。通常情况下,这很好,因为您只需要将它与
signInWithCustomToken
一起使用一次。这将在客户端登录用户。作为交换,Firebase身份验证服务器将返回Firebase ID令牌和刷新令牌,并将其存储在客户端上(Firebase ID令牌用于检查用户是否经过身份验证并访问Firebase实时数据库/Firestore/等)。这就是您称之为的
verifyIdToken
on。Firebase ID令牌将在一小时后过期,但Firebase刷新令牌将允许客户端在过期时刷新该ID令牌