【问题标题】:Can I use postman for onCall methods made as functions in firebase?我可以将邮递员用于在 Firebase 中作为函数制作的 onCall 方法吗?
【发布时间】:2019-07-16 07:31:39
【问题描述】:

所以我制作了这个非常简单的方法,我想使用自定义令牌登录到 Firebase。就目前而言,它只是

export const createCustomToken = functions.region('europe-west1').https.onCall(async (data, context) => {

    try {
        const firebaseJWT = await authenticationProvider.createCustomToken()
        console.log(firebaseJWT.toString())
    } catch (err) {
        throw new functions.https.HttpsError('internal', 'Something went wrong ');
    }
});

authenticationProvider 如下所示:

return firebase.admin.auth().createCustomToken("Some uid")
       .then((token) => {
           console.log("Did create custom token.");
           return token;
       }).catch((error) => {
           console.log("Error creating custom token:" + error);
           throw new firebase.functions.https.HttpsError('internal', 'createCustomToken(uid) has failed for some reason');
       }) 
}

我尝试使用 shell 方法在本地运行它,在命令提示符下执行此行:firebase functions:shell 然后调用 authenticationController.createCustomToken({})

这只是给了我这个回应: 创建自定义令牌时出错:错误:无法确定服务帐户。确保使用服务帐户凭据初始化 SDK。或者,指定具有 iam.serviceAccounts.signBlob 权限的服务帐户。原始错误:错误:发出请求时出错:getaddrinfo ENOTFOUND 元数据元数据:80。错误代码:ENOTFOUND

服务帐户似乎具有正确的角色,所以我认为这不是问题。

所以我想知道是否有任何方法可以让我从 Postman 调用 createCustomToken() 函数,并查看响应以便我可以正确测试我的代码,而无需应用程序实现 onCall 方法来查看结果?

或者我缺少什么来通过 firebase 函数运行它:shell 命令?

【问题讨论】:

标签: firebase google-cloud-functions postman


【解决方案1】:

您可以使用官方文档 here 中描述的请求标头在 Postman 上测试 firebase 功能

首先,您必须在项目的根文件夹中使用以下命令在本地提供您的功能

firebase serve

你也可以查看官方文档如何在本地提供函数here

在运行上述命令时,您将获得函数的 http 链接。像这样的

http://localhost:5000/{YOUR_FIREBASE_PROJECT_NAME}/us-central1/myFunction

在 Postman 中使用该链接进行 POST 请求。在 Postman 的“正文”部分中,从下拉列表中选择“原始”,然后选择“JSON (application/json)”,然后在正文部分中键入以下正文示例

{
    "data": {}
}

如文档here 中所述,需要在正文中添加这个带有“data”参数的json 对象。检查以下屏幕截图以供参考

现在您可以发送请求以从您的函数中获取响应。希望对你有帮助:)

注意:屏幕截图中的请求正文中有一个错误的“j”。请忽略。

【讨论】:

  • 邮递员中不再有 JSON(application/json) 选项。现在是否等于 JSON 选项?
  • 对我不起作用。 “消息”:“错误请求”,“状态”:“INVALID_ARGUMENT”
  • @phongyewtong 这对我有用——您是否将 { "data": {} } 添加为 JSON 正文?当我不传递空数据对象时出现该错误
  • 我得到了这个“必须在经过身份验证时调用该函数。”错误
  • 我在“标题”选项卡中添加了“content-type”="application/json",然后它也对我有用
猜你喜欢
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 2015-11-30
  • 2017-09-19
相关资源
最近更新 更多