Всем привет!
У меня возникли какие-то странные проблемы, в которых я не могу разобраться. Я использую API Discourse, чтобы позволить кому-то создавать посты без входа в систему. По соображениям безопасности этот код будет выполняться в серверной среде, а именно в среде на основе Node.js — Cloud Functions for Firebase.
Вот мой полный код:
const functions = require("firebase-functions");
const fetch = require('node-fetch');
const cors = require("cors")({ origin: true });
exports.makeDiscoursePost = functions.https.onRequest((request, response) => {
cors(request, response, () => {
let myHeaders = new Headers();
myHeaders.append("Api-Key", "<removed>");
myHeaders.append("Api-Username", "system");
myHeaders.append("Content-Type", 'application/json');
let requestOptions = {
method: 'POST',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://forum.kirupa.com/posts.json?title=Testingggg Discourse API, Part 2&raw=Making a brand new post using the API and seeing if things still work.", requestOptions)
.then(r => r.json())
.then(result => response.send(result))
.catch(error => response.send(error));
});
});
Я уверен, что этот код работает, потому что при запуске кода fetch изолированно пост успешно создаётся. Однако при запуске через среду функций я получаю ошибку «Internal Server Error». При просмотре логов я вижу сообщение «Finished with status: crash».
У кого-нибудь есть идеи, что здесь может быть не так? Удавалось ли кому-нибудь реализовать создание постов через функции Firebase?
(cc @blake — я следовал вашему подходу на Node.js с использованием метода HTTP-запроса, но получил те же результаты!)
Спасибо,
Kirupa