如何缩短Firebase Auth登录会话令牌的过期时间?
太懂这种为了测试要等一小时的崩溃感了!我来给你说几个不用熬时间的实用技巧:
手动强制令牌失效,跳过等待:如果你想测试刷新令牌的触发逻辑(比如ID令牌过期后自动刷新),根本不用等1小时。直接打开Firebase控制台,进入「Authentication」板块的「用户」列表,找到你的测试用户,点击右侧的「更多」按钮选择「撤销会话」。这样当前的ID令牌会立刻失效,接下来的API请求就会返回权限错误,你的应用自然会触发刷新令牌的流程,完美模拟过期场景。
用自定义令牌生成短有效期令牌:要是你确实需要模拟更短的令牌过期时长,可以用Admin SDK生成自定义令牌时指定过期时间。比如用Node.js的Admin SDK,生成时加上
expiresIn参数,设成5分钟(300秒):const customToken = await admin.auth().createCustomToken(uid, {}, { expiresIn: '300s' });接着用这个自定义令牌登录:
firebase.auth().signInWithCustomToken(customToken)这样生成的ID令牌就会在5分钟后过期,能快速测试刷新逻辑。虽然这个方法是自定义令牌登录流程,和你现在用的邮箱密码登录略有不同,但测试刷新逻辑的效果是一致的。
前端本地修改令牌过期时间(仅限测试):如果是在前端快速试手,你可以打开浏览器开发者工具,找到Firebase存在
localStorage或者IndexedDB里的ID令牌,手动把它的过期时间戳改成当前时间加几分钟,过一会儿就能触发过期逻辑了。这纯是前端测试的小trick,生产环境可千万别这么操作。
还要给你提个醒:Firebase Auth的ID令牌(就是你用来请求后端的那个令牌)默认有效期是1小时,这个是没办法全局修改的;而刷新令牌的有效期通常很长(Web端两周,移动端更久),正常场景下不会轻易过期,你要测试的大多是ID令牌过期后的刷新流程,用上面的方法完全能省掉等待的时间。
备注:内容来源于stack exchange,提问作者Bhalli Bhai

