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

使用Firebase Functions验证ID Token时遭遇500内部服务器错误

解决Firebase Function验证ID Token时的500内部服务器错误

核心代码错误修正

你的Node.js函数代码存在两处关键错误,直接导致了500内部服务器错误:

  1. 未导入onRequest触发器:onRequest是Firebase Functions的HTTP触发方法,需要从firebase-functions模块显式导入
  2. 错误的Auth服务调用方式:app.Auth()写法错误,正确调用应为admin.auth()(注意小写,需调用admin实例的auth服务,而非initializeApp返回的app对象)

修正后的完整函数代码:

const { initializeApp } = require('firebase-admin/app');
const { onRequest } = require('firebase-functions/v2/https');
const admin = require("firebase-admin");
const serviceAccount = require("path/to/serviceAccountCred.json");

initializeApp({
    credential: admin.credential.cert(serviceAccount)
});

exports.verifyToken = onRequest((req, res) => {
    const { uid, token } = req.query;

    if (!uid || !token) {
        res.status(400).send('Paramètres manquants : uid et token sont requis.');
        return;
    }

    admin.auth().verifyIdToken(token)
        .then((decodedToken) => {
            if (decodedToken.uid === uid) {
                res.status(200).send('Token valide.');
            } else {
                res.status(401).send('Token invalide.');
            }
        })
        .catch((error) => {
            console.error('Token验证失败:', error);
            // 认证类错误应返回401而非500,同时输出详细信息便于排查
            res.status(401).send(`Token验证失败: ${error.message}`);
        });
});

额外排查要点

如果修正后仍出现错误,可检查以下内容:

  • ServiceAccount文件路径:确保path/to/serviceAccountCred.json是正确的相对路径,部署时该文件需与函数代码在同一目录下
  • 查看Firebase函数日志:登录Firebase控制台,进入Functions页面查看具体错误日志,日志会显示500错误的详细原因(如权限配置错误、SDK初始化失败等)
  • Flutter端Token有效性:确认getIdToken()获取到的是有效ID Token,可在代码中打印token值,避免传入空字符串或过期token
  • 重新部署函数:修改代码后需执行firebase deploy --only functions命令,确保最新代码已部署到云端

内容的提问来源于stack exchange,提问作者swann.wlm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:27:44