【发布时间】:2021-03-29 22:12:03
【问题描述】:
我需要通过调用图形 API 在 Facebook 页面上发布图片。 执行这个:
curl --request POST "https://graph.facebook.com/{pageId}/photos?url={imageUrl}&message={message}&access_token={pageAccessKey}"
效果很好,不痒。但是,我似乎无法在 Node 上完成这项工作。
const http = require("follow-redirects").http;
const querystring = require("querystring");
const pageId = "pageId";
const pageAccessKey = "pageAccessKey";
function facebookPostImage(imageUrl, message) {
const data = querystring.stringify({
access_token: pageAccessKey,
url: imageUrl,
message: message
});
const options = {
method: "POST",
hostname: "graph.facebook.com",
path: `/${pageId}/photos`,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Content-Length": data.length,
}
};
const request = http.request(options, response => {
console.log(`statusCode: ${response.statusCode}`);
response.on("data", chunk => {
process.stdout.write(chunk);
});
});
request.on("error", error => {
console.error(error);
});
request.write(data);
request.end();
}
调用facebookPostImage 只会打印到控制台“statusCode: 500”。
不幸的是,我找不到任何通过这些 http API 调用 Facebook Graph API 的示例(甚至是通用 urlencoded http 请求的示例),所以我真的无法理解这段代码有什么问题。
【问题讨论】:
-
为什么端点路径的末尾有问号?
-
@CBroe 这实际上是我出于绝望而添加的东西,只是为了尝试它是否可行。我要编辑代码的sn-p。
-
您可能不会仅获得 500 状态代码,响应正文通常还包含人类可读的错误消息。所以去检查一下这个实例中包含的内容。
-
@CBroe 不是 response.on("data") 位吗?同样在错误上它应该打印出一些东西。奇怪的是,如果我在 JSON 中编码数据(我在某些时候错误地这样做了),它实际上给了我一个人类可读的错误(“需要用户访问令牌才能请求此资源。”),以及不同的状态代码。 (400)。
-
惊讶于它甚至进入了那个代码块,我认为像 500 这样的 HTTP 错误应该触发
request.on("error"部分?
标签: node.js http post facebook-graph-api