过去几天我一直在寻找有关此主题的信息。 我希望能够使用我的 Twitter 机器人发布包含文本和一张图像的消息。我收到一条错误消息:
ApiResponseError:请求失败 代码 403 - 您当前可以访问子集和有限的 v1.1 仅端点(例如媒体发布、0auth)。如果您需要访问此 端点,您可能需要不同的访问级别。您可以了解更多 这里:https://developer.twitter.com/en/portal/product(Twitter 代码 第453章)
因此,一方面,我收到的消息似乎是说我必须付费,因为我没有正确的访问级别,但另一方面,官方文档似乎说免费层允许上传图像( https://developer.x.com/en/docs/x-api)。
对 v2 帖子发布和媒体上传端点的速率限制访问
那么有人能够使用免费套餐发布图片吗?我的 Twitter 机器人是用 NodeJS 编写的。
我在这里留下答案,而不是在评论中,因为我相信这是你的问题,但我能做的最好的就是猜测,因为我目前无法访问 X 的 api 来确认。鉴于你的错误说(粗体陈述是我自己的):
ApiResponseError:请求失败,代码为 403 - 您当前只能访问子集和有限的 v1.1 端点(例如 media post、0auth)。如果您需要访问此端点,您可能需要不同的访问级别。您可以在这里了解更多信息:https://developer.twitter.com/en/portal/product(Twitter 代码 453)
请注意它如何表示您可以从 v1.1 端点的有限子集访问媒体帖子(可能是因为您处于免费套餐)。所以我也相信它说:
对 v2 帖子发布和媒体上传端点的速率限制访问帖子发布必须来自 v2 API,但由于我在其他地方找不到媒体上传,并且由于上述错误消息,我相信媒体上传端点来自 v1.1 API,所以我再次简单地给出我最好的猜测。
所以我假设您当前正在使用 v1.1 api 来尝试创建推文,这就是导致问题的原因?您应该使用 API v1.1 中的
媒体上传(因为我没有看到它的 v2),然后从该 的响应中获取媒体 id,然后 使用该媒体 id,就像使用 一样v2 tweet post api 如示例存储库中所述:
const token = {
key: "<<YOUR OAUTH TOKEN HERE>>",
secret: "<<YOUR OAUTH TOKEN SECRET HERE>>"
};
const authHeader = oauth.toHeader(oauth.authorize({
url: "https://api.x.com/2/tweets",
method: 'POST'
}, token));
const req = await got.post("https://api.x.com/2/tweets", {
json: { tweet: "<<YOUR TWEET TEXT HERE>>", media: {"media_ids": ["<<YOUR MEDIA ID HERE>>"]} },
responseType: 'json',
headers: {
Authorization: authHeader["Authorization"],
'user-agent': "v2CreateTweetJS",
'content-type': "application/json",
'accept': "application/json"
}
});
console.log(req.body);
请注意,上面的内容只会完成您需要做的后半部分。您需要从我上面链接的 media upload v1.1 api 的文档中找出前半部分。