以编程方式在Reddit上发表评论

Post comment programmatically to Reddit

本文关键字:评论 Reddit 编程 方式      更新时间:2023-09-26

我正在尝试使用Snoocore库以编程方式向Reddit发布评论。

这是我的代码:

    function postComment() {
        var commentText = document.getElementById("response").value;
        reddit('/api/comment').post({
            api_type: 'json',
            thing_id: getUrlVars()['link'],
            text: commentText
        });
    }

我用我的按钮中的 onclick 事件调用它。

<input type="button" value="Save" id="save-button" data-role="button" onclick="postComment()">

函数 postComment() 执行,但我得到以下 json 响应:

>>> Reddit Response:
{
  "json": {
    "errors": [
      [
        "USER_REQUIRED",
        "please sign in to do that",
        null
      ]
    ]
  }
}
>>> Endpoint URL: https://ssl.reddit.com/api/comment
>>> Endpoint method: POST
>>> Arguments: {
....

现在,我知道凭据是正确的。

我可以在代码的单独部分登录:

reddit.raw('http://www.reddit.com/api/me.json').get({
            }).then(function(data) {
                mainReddit(data);
            });

但不要发表评论。

为什么这不起作用?我已登录,为什么Reddit认为我没有登录?

编辑:

我添加了 uh 参数,现在我收到 403 错误。

呃: data.data.modhash

我还将我的代码更改为:

        function postComment() {
            reddit.raw('http://www.reddit.com/api/me.json').get({
            }).then(function(data) {
                console.log(data);
                var commentText = document.getElementById("response").value;
                reddit('/api/comment').post({
                    api_type: 'json',
                    thing_id: getUrlVars()['link'],
                    text: commentText,
                    uh: data.data.modhash
                });
            });
        }

当你在Reddit上发帖时,你必须确保你拥有完整的thing_id - 这意味着你必须根据评论的类型包含t1_和t3_。