从以下情况中,我可以看到两个不同的标记:
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,似乎令牌会导致问题。
为什么我会获得新令牌?我该如何解决这个问题?
答案 0 :(得分:0)
要通过updateProfile
更新个人资料后获取包含最新声明的新ID令牌,您只需拨打:currentUser.getIdToken(true)
即可强制执行令牌刷新。
注意,当令牌过期时,令牌刷新时,新令牌会自动获取带有配置文件更改的最新声明。要立即获得此功能,您可以强制刷新。