javascript - 使用请求库的 Firebase 函数未触发

标签 javascript firebase google-cloud-platform request google-cloud-functions

快到了,但由于某种原因,我的 HTTP post 请求没有触发,最终函数超时。我完全疯了,并发布我的代码,看看是否有人注意到我完全错过的任何菜鸟 Action 。注意:数据库写入完成,因此我假设 HTTP Post 请求未触发,这是一个安全的假设吗?或者 JS 是另一种野兽?

exports.stripeConnect = functions.https.onRequest((req, res) => {
    var code = req.query.code;
    const ref = admin.database().ref(`/stripe_advisors/testing`);
    var dataString = `client_secret=sk_test_example&code=${code}&grant_type=authorization_code`;
    var options = {
            url: 'https://connect.stripe.com/oauth/token',
            method: 'POST',
            body: dataString
    };

    function callback(error, response, body) {
            if (!error && response.statusCode === 200) {
            console.log(body);
            }
    }

    request(options, callback);
    return ref.update({ code: code });
});

最佳答案

我了解到您想发布到 https://connect.stripe.com/oauth/token通过使用 request 库,成功后,您希望将 code 值写入数据库。

您应该在云函数中使用 Promise 来处理异步任务。默认情况下,请求不会返回 Promise,因此您需要使用接口(interface)包装器来请求,例如 request-promise

因此,通常应该执行以下操作:

.....
var rp = require('request-promise');
.....

exports.stripeConnect = functions.https.onRequest((req, res) => {
    var code = req.query.code;
    const ref = admin.database().ref('/stripe_advisors/testing');
    var dataString = `client_secret=sk_test_example&code=${code}&grant_type=authorization_code`;
    var options = {
            url: 'https://connect.stripe.com/oauth/token',
            method: 'POST',
            body: dataString
    };

    rp(options)
    .then(parsedBody => {
        return ref.update({ code: code });
    .then(() => {
        res.send('Success');
    })
    .catch(err => {
        console.log(err);
        res.status(500).send(err);
    });

});

关于javascript - 使用请求库的 Firebase 函数未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52525371/

相关文章:

javascript - Angularjs:一个在 Controller 之间共享数据的工厂

swift - 如何设置 tableview 以使用 Cloud Firestore 中的地理点放置距离我当前位置最近的商店?

javascript - 使用 firebase 身份验证 token 使用 JS SDK 进行图形 api 调用

python - 永久升级 Google Cloud Shell 中的 Python 运行时?

javascript - 带有雷达循环覆盖的 Google map API v3 绘图,并自动更新雷达

javascript - 如何在 MVC View 中将变量值传递给 JScript?

google-cloud-platform - 尽管 GOOGLE_APPLICATION_CREDENTIALS 已成功设置为服务帐户 json,但 Sops 无法 gcp kms 解密 Circleci 上的文件

google-cloud-platform - Google AI Platform 训练 - 等待作业完成

javascript - Vue 应该只触发被点击的元素

javascript - 云函数 - firestore : event. data.toJSON 不是函数