我有一个Firebase项目,它有超过10个云功能。今天我又添加了3个,但这三个新的都抛出了一个错误UNAUTHENTICATED,而没有真正尝试调用函数。(日志中没有函数调用的记录(。自从添加了以前的函数后,我没有对我的环境或Firebase项目进行任何更改。
我已经尝试重新部署我项目中的所有功能,最新的三个功能仍然失败,而以前的功能运行良好。我还验证了我正在使用Node 8,因为据报道,使用Node 10会出现一些类似的问题。我不知道还能尝试什么,因为这个问题只适用于新功能。
新功能都有一个相似的特征:
exports.createGroup = functions.https.onCall((data, context) => {
//Firestore access
});
他们被这样称呼:
const create = functions().httpsCallable('createGroup');
return create({ group: oGroup }).then(result => {
//Do something
}).catch(err => {
console.log(err.message); //UNAUTHENTICATED
});
节点版本:8.16.2
Firebase工具版本:7.6.1
2023更新
- 在谷歌云控制台中打开云功能页面:https://console.cloud.google.com/functions/list.
- 单击要授予访问权限的函数旁边的复选框
- 单击屏幕顶部的权限。将打开"权限"面板
- 单击添加主体
- 在新建主体字段中,键入
allUsers
- 选择角色云功能>云函数调用程序从选择角色下拉菜单
- 单击保存
它必须在GCP控制台(而不是Firebase(上解决。只需遵循以下步骤:
- 转到您的GCP控制台并登录
- 在顶部菜单上,选择相应的Firebase项目
- 在左侧菜单上,转到"云函数"单击函数的复选框(而不是函数名称(
- 一旦选择,在右菜单上选择";添加成员">
- 在";新成员";键入allUsers
- 在"选择"功能栏上,选择"云功能"->云函数调用程序
- 点击";保存";然后";允许公共访问";关于弹出警告你可以走了
通过谷歌云文档:
自2020年1月15日起,HTTP功能需要通过违约您可以指定函数是否允许未经身份验证在部署时或部署之后调用。
解决方案是使用Google Cloud控制台(而不是Firebase控制台(为新创建的函数添加allUsers
权限。
https://cloud.google.com/functions/docs/securing/managing-access-iam#allowing_unauthenticated_function_invocation
我在部署几个函数时遇到了这个错误,在上传过程中出现了一个问题,部署似乎已损坏。。可能与网络有关,不确定
在Firebase控制台中删除了有问题的云功能,然后对它们进行了新的成功部署后,"FirebaseFunctionsException UNAUTHENTICATED">错误消失
首先,我试图重新部署功能,但这还不够,错误以这种方式继续
来自第二代云功能的文档:
- 转到谷歌云控制台
- 单击要授予访问权限的函数的链接名称
- 单击功能详细信息概述页面右上角的Powered By Cloud Run链接
- 单击触发器并选择允许未经身份验证的调用
- 单击保存
在尝试添加所有用户并获得";类型为allUsers和allAuthenticatedUsers的主体不能添加到此资源中;。