Node.js Firebase云函数返回403
我在部署firebase云功能时遇到一些问题。到目前为止,代码非常简单,这是整个Node.js Firebase云函数返回403,node.js,firebase,google-cloud-functions,Node.js,Firebase,Google Cloud Functions,我在部署firebase云功能时遇到一些问题。到目前为止,代码非常简单,这是整个index.js文件: const functions = require('firebase-functions') const express = require('express') const cors = require('cors') const app = express() app.use(cors({origin: true})) app.get( "/test"
index.js
文件:
const functions = require('firebase-functions')
const express = require('express')
const cors = require('cors')
const app = express()
app.use(cors({origin: true}))
app.get(
"/test",
(req, res) => {
res.status(200).send({message: "Hello world!"})
}
)
exports.api = functions.https.onRequest(app)
在运行npm-run-service
和npm-run-deploy
之后,我使用postman测试功能。
如果我从本地测试函数,它可以正常工作,但是如果我测试部署的相同函数,我会得到一个403禁止的错误
在文档()中,它说:
警告:新的HTTP和HTTP可调用函数与任何
低于7.7.0版的Firebase CLI在默认情况下是私有的,并抛出
调用HTTP 403时出错。或者显式地使这些函数
公共,或在部署任何新应用程序之前更新Firebase CLI
功能
但我使用的是firebase工具版本:
$ firebase tools --version
8.2.0
所以我真的不明白怎么了!我怎样才能解决这个问题
编辑:我正在添加我在Postman中使用的url:
没有特殊设置或类似设置,我只是复制npm run service
和npm run deploy
作为api url返回的url,我设置为方法“GET”,然后单击发送:
编辑2:
运行npm运行日志
仅显示以下内容:
2020-05-02T19:47:51.489Z I :
2020-05-02T19:47:57.764Z I :
2020-05-02T19:47:59.869Z N test:
2020-05-02T19:49:08.122Z N test:
2020-05-02T20:01:51.080Z I :
2020-05-02T20:01:51.493Z I :
2020-05-02T20:01:53.614Z N test:
2020-05-02T20:02:39.239Z N test:
2020-05-02T20:19:54.468Z I :
2020-05-02T20:19:54.922Z I :
2020-05-02T20:20:39.288Z N api:
2020-05-02T20:20:39.314Z N test:
2020-05-02T20:20:42.556Z N test:
2020-05-02T20:21:30.541Z N api:
2020-05-02T20:29:33.576Z I :
2020-05-02T20:29:33.838Z I :
2020-05-02T20:29:35.333Z N api:
2020-05-02T20:30:29.021Z N api:
2020-05-02T20:37:34.864Z I :
2020-05-02T20:37:35.175Z I :
2020-05-02T20:37:36.833Z N api:
2020-05-02T20:38:17.906Z N api:
firebase控制台的日志显示:
{"@type":"type.googleapis.com/google.cloud.audit.AuditLog","status":{},"authenticationInfo":{"principalEmail":"projectOwnerEmail.com"},"serviceName":"cloudfunctions.googleapis.com","methodName":"google.cloud.functions.v1.CloudFunctionsService.UpdateFunction","resourceName":"projects/PROJECT_NAME/locations/us-central1/functions/api"}
请编辑该问题,以准确显示您是如何发出请求的,尤其是URL路径。控制台中的函数日志是怎么说的?您是否通过将调用程序角色赋予allUsers来打开函数public?如果没有,则必须使用服务帐户密钥文件(并将GOOGLE_APPLICATION_CREDENTIALS env var设置为密钥文件的路径)或使用OAuth对HTTP请求进行身份验证。请查看此问题,编辑问题以准确显示您是如何发出请求的,尤其是URL路径。控制台中的函数日志是怎么说的?您是否通过将调用程序角色赋予allUsers来打开函数public?如果没有,则必须使用服务帐户密钥文件(并将GOOGLE_APPLICATION_CREDENTIALS env var设置为密钥文件的路径)或使用OAuth对HTTP请求进行身份验证。看到这个了吗