开发环境下获取Firebase Auth身份验证令牌的简单方法
无需搭建前端登录获取Firebase开发测试令牌的方法
不需要搭建前端登录系统,完全可以通过Firebase Admin SDK快速生成测试用的身份令牌,操作步骤如下:
前置准备
首先你需要先准备两个必备信息:
- Firebase项目的服务账号密钥:打开Firebase控制台进入对应项目,依次点击左侧菜单「项目设置」→「服务账号」→「生成新的私钥」,将生成的JSON文件保存在本地即可,注意不要将该密钥提交到公共代码仓库。
- 测试用户UID:在Firebase控制台左侧菜单「Authentication」→「用户」列表中,新建一个专门用于开发测试的用户,复制该用户的UID备用。如果已经有测试用户可以直接用现有UID。
方法一:用现有Laravel环境生成(最推荐)
你已经在Laravel项目中集成了Firebase Auth,直接用现有环境生成是最省事的方案,不需要额外装依赖。
方案1:临时路由生成
在开发环境的路由文件(routes/api.php或routes/web.php)中添加如下临时路由:
// 仅开发环境使用,上线前务必删除该路由 Route::get('/dev/get-firebase-token', function () { // 替换为你自己的测试用户UID $testUserUid = '你的测试用户UID'; // 生成自定义令牌 $customToken = app('firebase.auth')->createCustomToken($testUserUid); // 兑换为接口验证用的ID Token $signInResult = app('firebase.auth')->signInWithCustomToken($customToken); return $signInResult->idToken(); });
开发环境下直接访问该路由即可拿到可用的ID Token,粘贴到Postman的Authorization头(Bearer Token类型)即可调用测试接口。
方案2:Artisan Tinker生成(不需要加路由)
直接在项目根目录终端执行以下命令:
- 启动Tinker:
php artisan tinker - 依次输入以下代码,替换为自己的测试用户UID:
$testUserUid = '你的测试用户UID'; $customToken = app('firebase.auth')->createCustomToken($testUserUid); $signInResult = app('firebase.auth')->signInWithCustomToken($customToken); echo $signInResult->idToken();
终端会直接输出可用的ID Token,无需打开浏览器。
方法二:用Node.js脚本生成(不需要改Laravel代码)
如果不想碰现有项目代码,可以用独立的Node.js脚本生成:
- 本地提前安装好Node.js运行环境,新建一个空文件夹,把之前下载的服务账号密钥JSON文件放进去,命名为
service-account.json - 终端进入该文件夹,执行命令安装依赖:
npm install firebase-admin - 文件夹内新建
get-test-token.js文件,内容如下:
const admin = require('firebase-admin'); const serviceAccount = require('./service-account.json'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount) }); // 替换为你的测试用户UID const TEST_USER_UID = '你的测试用户UID'; // 替换为你的Firebase项目Web API密钥,可在Firebase控制台「项目设置」→「通用」页面找到 const FIREBASE_WEB_API_KEY = '你的项目Web API密钥'; async function generateToken() { // 生成自定义令牌 const customToken = await admin.auth().createCustomToken(TEST_USER_UID); // 兑换ID Token const response = await fetch(`https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=${FIREBASE_WEB_API_KEY}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token: customToken, returnSecureToken: true }) }); const result = await response.json(); console.log('测试用ID Token:\n', result.idToken); console.log('有效期:', result.expiresIn, '秒'); } generateToken();
- 终端执行命令:
node get-test-token.js,即可直接输出可用的ID Token。
关于永久令牌的说明
Firebase官方出于安全考虑,默认ID Token的最长有效期为1小时,不支持生成永久有效的身份令牌。但上述生成方法操作成本极低,每次生成仅需几秒钟,完全可以满足开发测试需求。如果嫌每次复制麻烦,可以将生成脚本配置为Postman的前置请求脚本,实现每次接口请求自动获取最新Token,无需手动操作。
内容的提问来源于stack exchange,提问作者The Blind Hawk
相关产品推荐
相关产品推荐

