Firebase HTTP 云功能可与 Axios 配合使用,但 httpsCallable 被拒绝

问题描述 投票:0回答:1

我想使用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,但仍然得到了它(并且在生产中(它具有权限)它也会引发错误

我阅读了所有文档,但一定错过了一些东西

javascript firebase axios google-cloud-functions
1个回答
0
投票

您没有显示函数的代码,但我可以告诉您,您可能没有使用 onCall 编写

可调用函数
,如文档中所示。 如果您使用
onRequest
,那么您没有编写可调用函数 - 您编写了一个普通的 HTTP 函数。 它们彼此不兼容。

使用

onRequest
的普通 HTTP 函数无法像使用 Firebase 客户端 SDK 那样调用可调用函数。 如果您想使用 Firebase 客户端 SDK,则必须使用
onCall
编写函数。

© www.soinside.com 2019 - 2024. All rights reserved.