Firebase:为什么我两次获得Firebase ID令牌?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firebase:为什么我两次获得Firebase ID令牌?相关的知识,希望对你有一定的参考价值。
Question
从以下情况中,我可以看到两个不同的标记:
- 完成注册后,我会获得第一个Firebase ID令牌。
- 当我完全退出后回到我的应用程序时,我正在获得一个新的JWT。
What I've found
const app = express();
app.use((req, res, next) => {
if (!req.headers.authorization)
return res.status(403).json({ message: 'Missing Authorization Header' });
const jwt = req.headers.authorization.trim();
return admin.auth().verifyIdToken(jwt).then((decodedToken) => {
const uid = decodedToken.uid; // Exists
const displayName = decodedToken.name; // No displayName, object Undefined
const photoURL = decodedToken.picture; // No photoURL, object Undefined
next();
});
});
即使我通过调用下面的函数更新了用户的默认配置文件,似乎ID令牌不包含用户的displayName
和photoURL
。
initializeUserProfile(name: string, photoURL: string) {
let data = {
displayName: name,
photoURL: photoURL
};
this.afAuth.auth.currentUser.updateProfile(data).then(() => {
this.getUsersRef(this.currentUserId).update(data); // Save data to firestore
}).catch((err) => console.log(err));
}
注意:注销并成功登录应用程序后,令牌的长度比前一个令牌长得多。此外,它确实包含displayName
和photoURL
。
我还发布了我的相关问题here,似乎令牌导致问题。
我为什么要获得新令牌?我该如何解决这个问题?
答案
要在通过updateProfile
更新配置文件后获取具有最新声明的新ID令牌,您只需通过调用:currentUser.getIdToken(true)
强制令牌刷新。
请注意,当令牌过期时,令牌刷新时,新令牌会自动获取带有配置文件更改的最新声明。要立即获得此功能,您可以强制刷新。
以上是关于Firebase:为什么我两次获得Firebase ID令牌?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Android onAuthStateChanged 调用了两次
必须点击登录按钮两次;使用 vue-router 和 firebase 身份验证