Функция Firebase с использованием библиотеки запросов не запускается - PullRequest
0 голосов
/ 26 сентября 2018

Почти там, но по какой-то причине мой HTTP пост-запрос не срабатывает и в итоге тайм-аут функции.Полностью вне себя и выкладываю свой код, чтобы увидеть, если кто-нибудь обнаружит какие-либо движения нуба, которые я полностью пропускаю.ПРИМЕЧАНИЕ: запись в базу данных завершена, поэтому я предполагаю, что запрос 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 });
});

1 Ответ

0 голосов
/ 27 сентября 2018

Я понимаю, что вы хотите POST к https://connect.stripe.com/oauth/token, используя библиотеку request, и в случае успеха вы хотите записать значение code в базу данных.

Вам следуетиспользуйте обещания в своей облачной функции для обработки асинхронных задач.По умолчанию запрос не возвращает обещания, поэтому вам нужно использовать интерфейсную оболочку для запроса, например request-обещание

. Поэтому обычно следует выполнить следующие действия:

.....
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);
    });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...