如何从 Cloud Function 获取 Firebase 项目名称或 ID
How to get Firebase Project Name or ID from Cloud Function
我正在使用 Cloud Functions 并想从我的 Javascript 服务器文件之一中获取项目名称。我知道该值存储在 .firebaserc 中,但我认为该文件在服务器上不可用,对吗?我想做这样的事情:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.getProjectName(); // or getProjectID()
或
functions.getProjectName();
谢谢@Frank。答案是:
process.env.GCLOUD_PROJECT
.
我不确定变量 process
来自哪里,但这确实可以获取项目名称。
您可以使用functions.config().firebase.projectId
PS 初始化应用程序最简单的方法是 admin.initializeApp(functions.config().firebase);
Firebase admin SDK 可以为您访问该信息。
const admin = require('firebase-admin');
const projectId = admin.instanceId().app.options.projectId
目前我正在使用 app.INTERNAL.credential_.projectId
。
这显然不是保存,但到目前为止还没有统一的方法来获取它 (AFAIK)
这对我有用。 (节点 10)
const FIREBASE_CONFIG = process.env.FIREBASE_CONFIG && JSON.parse(process.env.FIREBASE_CONFIG);
const projectId = FIREBASE_CONFIG.projectId;
试试这个:
const projectId = admin.instanceId().app['options_'].credential.projectId
这是上面给出的答案的组合:
function getProjectID() {
return firebaseInstance.options.projectId ||
(firebaseInstance.options.credential && firebaseInstance.options.credential.projectId) || '';
}
或者在 TypeScript 中:
function getProjectID(): string {
return firebaseInstance.options.projectId ||
(firebaseInstance.options.credential && (firebaseInstance.options.credential as unknown as { projectId: string }).projectId) || '';
}
对于较新版本的 Node 上的云函数 运行:
import firestore from "@google-cloud/firestore";
const client = new firestore.v1.FirestoreAdminClient();
const projectId = await client.getProjectId();
process.env.FIREBASE_CONFIG
: Provides the following Firebase project config info:
{
databaseURL: 'https://databaseName.firebaseio.com',
storageBucket: 'projectId.appspot.com',
projectId: 'projectId'
}
请注意,由于它是一个 JSON 字符串,您需要像这样解析它:
const projectId = JSON.parse(process.env.FIREBASE_CONFIG).projectId;
或者,您可以使用 Cloud Functions 中 firebase-functions
包中的 the undocumented firebaseConfig()
method,如下所示:
import { firebaseConfig } from "firebase-functions";
const projectId = firebaseConfig().projectId;
此外,Google Cloud Platform(Firebase 在其上运行)将自动填充 environment variables documented here,具体取决于您使用的运行时。
使用admin SDK获取项目ID的方法是
admin.appCheck().app.options.credential.projectId
这也适用于 Docker 等无头设置,其中设置了环境变量 GOOGLE_APPLICATION_CREDENTIALS
。
我正在使用 Cloud Functions 并想从我的 Javascript 服务器文件之一中获取项目名称。我知道该值存储在 .firebaserc 中,但我认为该文件在服务器上不可用,对吗?我想做这样的事情:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.getProjectName(); // or getProjectID()
或
functions.getProjectName();
谢谢@Frank。答案是:
process.env.GCLOUD_PROJECT
.
我不确定变量 process
来自哪里,但这确实可以获取项目名称。
您可以使用functions.config().firebase.projectId
PS 初始化应用程序最简单的方法是 admin.initializeApp(functions.config().firebase);
Firebase admin SDK 可以为您访问该信息。
const admin = require('firebase-admin');
const projectId = admin.instanceId().app.options.projectId
目前我正在使用 app.INTERNAL.credential_.projectId
。
这显然不是保存,但到目前为止还没有统一的方法来获取它 (AFAIK)
这对我有用。 (节点 10)
const FIREBASE_CONFIG = process.env.FIREBASE_CONFIG && JSON.parse(process.env.FIREBASE_CONFIG);
const projectId = FIREBASE_CONFIG.projectId;
试试这个:
const projectId = admin.instanceId().app['options_'].credential.projectId
这是上面给出的答案的组合:
function getProjectID() {
return firebaseInstance.options.projectId ||
(firebaseInstance.options.credential && firebaseInstance.options.credential.projectId) || '';
}
或者在 TypeScript 中:
function getProjectID(): string {
return firebaseInstance.options.projectId ||
(firebaseInstance.options.credential && (firebaseInstance.options.credential as unknown as { projectId: string }).projectId) || '';
}
对于较新版本的 Node 上的云函数 运行:
import firestore from "@google-cloud/firestore";
const client = new firestore.v1.FirestoreAdminClient();
const projectId = await client.getProjectId();
process.env.FIREBASE_CONFIG
: Provides the following Firebase project config info:{ databaseURL: 'https://databaseName.firebaseio.com', storageBucket: 'projectId.appspot.com', projectId: 'projectId' }
请注意,由于它是一个 JSON 字符串,您需要像这样解析它:
const projectId = JSON.parse(process.env.FIREBASE_CONFIG).projectId;
或者,您可以使用 Cloud Functions 中 firebase-functions
包中的 the undocumented firebaseConfig()
method,如下所示:
import { firebaseConfig } from "firebase-functions";
const projectId = firebaseConfig().projectId;
此外,Google Cloud Platform(Firebase 在其上运行)将自动填充 environment variables documented here,具体取决于您使用的运行时。
使用admin SDK获取项目ID的方法是
admin.appCheck().app.options.credential.projectId
这也适用于 Docker 等无头设置,其中设置了环境变量 GOOGLE_APPLICATION_CREDENTIALS
。