我正在编写一个Firebase云函数来对用户进行身份验证,并获取refresh_token和access_token供以后使用。以下是初始化Google OAuth2客户端的代码段:
const { google } = require("googleapis");
module.exports = () => new google.auth.OAuth2(
GOOGLE_CLIENT_ID,
GOOGLE_CLIENT_SECRET,
`${BACKEND_URL}/authCallback`,
);
当前,我必须先将函数部署到firebase,然后才能获取BACKEND_URL
的值。是否可以在函数内部检索当前的Firebase唯一URL?
答案 0 :(得分:3)
HTTPS函数网址如下:
https://us-central1-YOUR-PROJECT.cloudfunctions.net/test
其中“ us-central1”是部署区域,“ YOUR-PROJECT”是Firebase / Cloud项目的名称。 “ test”是函数的名称。其他所有内容都保持不变。
process.env.FUNCTION_REGION
是部署当前功能的区域。
process.env.GCP_PROJECT
是已部署当前功能的项目的名称。
因此,如果假设当前正在运行的功能与目标HTTPS功能共享相同的项目和部署区域,则可以使用这两个流程环境变量的内容来构建URL。
答案 1 :(得分:0)
对于NodeJS v10运行时,以下功能适用于http函数:
export const yourFunction = functions.https.onRequest(((req, resp) => {
const url = `https://${req.header('host')}/${process.env.FUNCTION_TARGET}${req.originalUrl}`;
resp.send({url: url});
}))
如果您不关心附加路径/查询参数,则可以跳过req.originalUrl
。