无法拨打reddit的/ api / submit

时间:2015-07-14 17:01:57

标签: node.js reddit node-request

我无法在reddit / r / redditdev上获得任何帮助,所以我希望你在stackoverflow上的好人可以帮忙

我正打算拨打/api/submit

  1. 我可以成功登录用户并检索承载/访问令牌。 (我使用passport-reddit节点模块)
  2. 我可以成功调用/ api / needs_captcha
  3. 当/ needs_captcha返回true时,我可以成功调用/ api / new_captcha
  4. 我可以向用户显示验证码图像
  5. 现在我尝试使用nodejs的请求模块调用提交,如此

    var options = {
      url: 'https://oauth.reddit.com/api/submit',
      method: 'POST',
      headers: {
          'Authorization': 'bearer '+usertoken
        , 'user-agent': 'node.js'
      },
      json: data
    } 
    request(options, function(error, response, body) ...
    
  6. 我的“数据”变量示例如下所示:

    { api_type: 'json',
      kind: 'self',
      sr: 'test',
      title: 'more test',
      text: 'hello world',
      iden: 'o6NsDh4IMCDb2To2DeUXJAgEPkB4O7uS',
      captcha: 'WZRTBL' }
    

    但我得到了回复:

    {
      "jquery":[
        [0,  1,  "call", ["body"]],
        [1,  2,  "attr", "find"],
        [2,  3,  "call", [".status"]],
        [3,  4,  "attr", "hide"],
        [4,  5,  "call", []],
        [5,  6,  "attr", "html"],
        [6,  7,  "call", [""]],
        [7,  8,  "attr", "end"],
        [8,  9,  "call", []],
        [1,  10, "attr", "captcha"],
        [10, 11, "call", ["1oWOOhcicpcpdwjENw5KrR2xHRl7J0aS"]],
        [1,  12, "attr", "find"],
        [12, 13, "call", [".error.BAD_CAPTCHA.field-captcha"]],
        [13, 14, "attr", "show"],
        [14, 15, "call", []],
        [15, 16, "attr", "text"],
        [16, 17, "call", ["care to try these again?"]],
        [17, 18, "attr", "end"],
        [18, 19, "call", []]
      ]
    }
    

    此外,我尝试将其作为不同的用户运行,具有足够的业力点并且不需要验证码。

    发布后,我得到了这个似乎表明成功的回复:

    {
      "jquery":[
        [0, 1, "call", ["body"]],
        [1, 2, "attr", "find"],
        [2, 3, "call", [".status"]],
        [3, 4, "attr", "hide"],
        [4, 5, "call", []],
        [5, 6, "attr", "html"],
        [6, 7, "call", [""]],
        [7, 8, "attr", "end"],
        [8, 9, "call", []]
      ]
    }
    

    但我无法在/ r / test subreddit中找到我发布的消息。

    我必须完全做错事......

3 个答案:

答案 0 :(得分:6)

在浏览了与/ api / submit相关的不同文档后,我发现您错过了"数据"的样本字段uh。缺少uh会导致看起来像你的错误(请参阅下面的文档)

这里有更多文档与我所说的相关:

https://github.com/reddit/reddit/wiki/API:-submit http://www.reddit.com/dev/api

答案 1 :(得分:0)

尝试将User-Agent标头更改为更具描述性的标题。请参阅此处的指南:https://github.com/reddit/reddit/wiki/API。我听说过人们只使用像node.js这样的通用用户代理字符串时遇到问题。

如果您仍然遇到问题,Apigee控制台(https://apigee.com/console/reddit)已帮助我调试reddit API的问题。只需添加您的User-Agent标头和授权令牌,并通过控制台搞乱不同的参数,如果这比建立对您的应用程序的更改更快。

答案 2 :(得分:0)

我刚刚遇到了类似的问题,修复(对于你的第二个错误)是不是作为JSON发送,而是作为URI中的查询发送。

/api/submit?api_type=json&kind=self&sr=test&title=more%20test&text=hello%20world

根据需要附加任何其他字段。

保留您使用的“网址”,“方法”和“标题”。

然后应该像这样返回一个json:

"json": {
    "data": {
        "id": "12abcd",
        "name": "t3_12abcd",
        "url": "https://www.reddit.com/r/test/comments/12abcd/more_test/"
    },
    "errors": []
}