我正在从 Vercel 中的 NextJS 应用程序向 Firebase Functions 上部署的 NodeJS 发出请求,我已经在服务器中设置了管理员身份验证,但缺少某些内容,因为我从标题中收到错误
NodeJS:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const app = require('./server'); // logic of the app
admin.initializeApp();
exports.app = functions.https.onRequest(app);
您提到您已经设置了 Firebase 管理员身份验证。确保使用 Firebase 管理员的正确凭据正确配置了 admin.initializeApp()。通常,您需要提供正确的服务帐户密钥或 Firebase 配置。
如果需要,请确保您使用 Firebase 管理 SDK 的服务帐户。
const admin = require('firebase-admin');
const serviceAccount = require('./path-to-service-account.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<your-database-name>.firebaseio.com"
});
确保您的 serviceAccount 密钥正确并且 Firebase 项目 ID 设置正确
确保您已设置正确的环境变量,尤其是 API 密钥(如果需要)。如果您的 API 密钥存储在 Firebase 函数或 Firebase 环境变量中,请检查是否有拼写错误或缺少变量。
firebase functions:config:set api.key="your-api-key"
然后,在您的 Firebase Functions 代码中,使用
检索 API 密钥const apiKey = functions.config().api.key;
确保您使用的服务帐号具有访问 Firebase 服务所需的权限。转到您的 Firebase 控制台:
如果您从 Next.js 应用向 Firebase Functions 发出请求,如果处理不当,也可能会出现 CORS 问题。
要在 Firebase 函数中设置 CORS:
const cors = require('cors')({ origin: true });
exports.app = functions.https.onRequest((req, res) => {
cors(req, res, () => {
app(req, res);
});
});