我在 Firebase功能上遇到 Braintree服务器节点SDK 的问题。
但奇怪的是,它在我的本地服务器上运行良好(在本地使用 firebase服务器)。
在firebase上,应用程序只在错误对象上返回 unexpectedError ,而不指定可理解的错误消息。
我甚至尝试将网关对象的超时设置为较高的值,但问题仍然存在。
这是我管理令牌生成的服务器代码的一部分:
const functions = require("firebase-functions");
const express = require("express");
const braintree = require("braintree");
var gateway = braintree.connect({
environment: braintree.Environment.Sandbox,
merchantId: "************",
publicKey: "************",
privateKey: "************"
});
app.get("/generate_token", function (req, res) {
gateway.clientToken.generate({}, function (err, response) {
if(response)
res.send({error: false, token: response.clientToken});
else
res.send({error: true, errorObj: err, response: response});
});
});
在本地运行此代码会返回正确的结果:
{"error": false, "token": "*********"}
但是在firebase上部署并运行它会返回错误:
{
"error": true,
"errorObj": {
"name": "unexpectedError",
"type": "unexpectedError"
}
}
答案 0 :(得分:1)
对于免费套餐(Spark)上的Firebase项目,将阻止与非Google受控端点的传出套接字连接。这是为了防止自动滥用。您的项目需要升级到Blaze计划以启用传出连接。用于开发目的的成本可能可以忽略不计,但在升级之前仍应检查pricing page。