我正在使用 Firebase Auth 让用户使用其 Google 帐户进行身份验证。我发现返回的tokenfirebase.auth().currentUser.getIdToken只有1小时有效。为了让会话持续更长时间,我尝试创建一个会话 cookie,如管理会话 Cookie中所述:
const expiresIn = 60 * 60 * 24 * 5 * 1000;
admin.auth().createSessionCookie(idToken, {expiresIn}).then((sessionCookie) => {
const options = {maxAge: expiresIn, httpOnly: true, secure: true};
res.cookie('session', sessionCookie, options);
res.end(JSON.stringify({status: 'success'});
}
Run Code Online (Sandbox Code Playgroud)
此代码成功创建了会话 cookie,并且可以使用 验证后续请求admin.auth().verifySessionCookie。一切都很好,直到我尝试增加expiresIn持续时间。事实证明,Firebase 会话 Cookie 的最长过期时间为 2 周。来自文档:
能够创建自定义过期时间从 5 分钟到 2 周不等的会话 cookie。
对于这个项目,我希望用户登录一次并保持登录状态。我尝试在与服务器的每次交互中扩展会话,但我没有找到任何有关如何执行此操作的官方文档。admin.auth().createSessionCookie使用 返回的令牌调用服务器似乎是有意义的admin.auth().verifySessionCookie,但失败并出现以下错误:
Failed to extend session: { Error: An internal error has occurred. …Run Code Online (Sandbox Code Playgroud)