检索Firebase函数的当前唯一URL

时间:2018-07-07 20:46:41

标签: node.js firebase google-oauth google-cloud-functions

我正在编写一个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?

2 个答案:

答案 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