我想使用httpsCallable,因为它支持模拟,并且不需要写出整个云函数的url。当我使用 AXIOS 时,它就可以正常工作:
import axios from "axios";
const cloudFunctionURL = window.cloudFunctionBase + "editors-getCompanyEditors";
export async function fetchCompanyEditors(userId: string, companyId: string) {
try {
const response = await axios.post(cloudFunctionURL, { userId, companyId });
const res = response.data;
return res;
} catch (error) {
console.error("Error:", error);
throw error;
}
}
但是
import { httpsCallable } from "firebase/functions";
import { functions } from "@/js/firebase";
const getCompanyEditors = httpsCallable(functions, 'editors-getCompanyEditors');
export async function fetchCompanyEditors(userId: string, companyId: string) {
try {
const result = await getCompanyEditors({ userId, companyId });
return result.data;
} catch (error) {
console.error("Error:", error);
throw error;
}
}
导致生产和本地主机上的权限被拒绝。知道什么会导致这种情况吗?
我已经使用云函数调用程序下载了权限 JSON,但仍然得到了它(并且在生产中(它具有权限)它也会引发错误
我阅读了所有文档,但一定错过了一些东西
您没有显示函数的代码,但我可以告诉您,您可能没有使用 onCall
编写
可调用函数,如文档中所示。 如果您使用
onRequest
,那么您没有编写可调用函数 - 您编写了一个普通的 HTTP 函数。 它们彼此不兼容。
使用
onRequest
的普通 HTTP 函数无法像使用 Firebase 客户端 SDK 那样调用可调用函数。 如果您想使用 Firebase 客户端 SDK,则必须使用 onCall
编写函数。