You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发环境下获取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生成(不需要加路由)

直接在项目根目录终端执行以下命令:

  1. 启动Tinker:php artisan tinker
  2. 依次输入以下代码,替换为自己的测试用户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脚本生成:

  1. 本地提前安装好Node.js运行环境,新建一个空文件夹,把之前下载的服务账号密钥JSON文件放进去,命名为service-account.json
  2. 终端进入该文件夹,执行命令安装依赖:npm install firebase-admin
  3. 文件夹内新建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();
  1. 终端执行命令:node get-test-token.js,即可直接输出可用的ID Token。

关于永久令牌的说明

Firebase官方出于安全考虑,默认ID Token的最长有效期为1小时,不支持生成永久有效的身份令牌。但上述生成方法操作成本极低,每次生成仅需几秒钟,完全可以满足开发测试需求。如果嫌每次复制麻烦,可以将生成脚本配置为Postman的前置请求脚本,实现每次接口请求自动获取最新Token,无需手动操作。

内容的提问来源于stack exchange,提问作者The Blind Hawk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:06:00