javascript - 如何在firebase云函数中正确地将signInWithEmailAndPassword()转换为createCustomToken()-Node js
问题描述
我想延长我的应用程序中用户令牌的默认到期时间。目前我使用 signInWithEmailAndPassword 函数,令牌持续一个小时。
我知道这可以使用 createcustomtoken 函数完成,但我对如何去做有点困惑。
这是我当前的登录功能:
exports.login = (req, res) => {
const user = {
email: req.body.email,
password: req.body.password
};
firebase.auth().signInWithEmailAndPassword(user.email, user.password)
.then((data) => {
return data.user.getIdToken();
})
.then((token) => {
return res.json({ token });
})
.catch((err) => {
console.error(err);
return res.status(403).json({ general: "Wrong credentials, please try again"})
})
}
解决方案
不幸的是,无法将到期时间延长超过 3600 秒,超过时间 (iat) 的问题。
在此文档中,您可以看到exp
明确表示:
最多可以比 iat 晚 3600 秒。
但是,您可以使用没有过期时间的刷新令牌来获取新令牌。
如果您仍想创建自定义令牌,您可以执行以下操作:
const someJwt = jwtDecode<{ sub: string; email: string }>(someOtherTokenFromThirdParty)
// sub is the unique id for the apple user
const customToken = await admin.auth().createCustomToken(someJwt.sub, {
...extraClaims
})
推荐阅读
- android - 无法解析定义的 Disposable
- javascript - 在使用 Javascript 确定两个日期之间的差异时,如何考虑闰年?
- shopify - Shopify / Liquid - 在没有分页的情况下计算博客中的文章
- javascript - RadioButton 选中的字段默认情况下不适用于 [No]。我已将其实现为将默认设置为 No 并禁用它
- python - 使用 Scrapy 抓取用户评论不会转到“下一页”页面
- r - 从R中的重复序列中选择具有最大数量的所有行
- java - 我的逻辑运算符 if 语句中的无尽错误
- google-apps-script - 表格卡住了正在加载...一个单元格,我必须重新加载
- visual-studio-code - vscode 中的 Lua 扩展突然在我的代码中添加了东西
- postgresql - 将非容器本地 PostgreSQL 连接到本地 SpringBoot docker 容器