15

我在 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) ...
    

我的“数据”变量示例如下所示:

{ 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 中找不到我发布的消息。

我一定是完全做错了什么...

4

3 回答 3

6

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

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

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

于 2015-07-22T13:16:46.007 回答
0

尝试将您的 User-Agent 标头更改为更具描述性的内容。请参阅此处的指南:https ://github.com/reddit/reddit/wiki/API 。我听说有人在使用通用用户代理字符串时遇到问题,例如node.js.

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

于 2015-07-23T14:47:37.993 回答
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": []
}
于 2016-01-12T10:29:38.693 回答