Не удалось позвонить reddit/api/отправить

Я не мог получить помощь по reddit/r/redditdev, поэтому я надеюсь, что вы, прекрасные люди, в stackoverflow можете помочь

Я пытаюсь вызвать /api/submit.

  • Я могу успешно зарегистрировать пользователя и получить токен-носитель/доступ. (Для этого я использую модуль паспорт-reddit node)
  • Я могу успешно позвонить /api/needs _captcha
  • Когда /needs _captcha возвращает true, я могу успешно позвонить /api/new _captcha
  • Я могу отображать изображение captcha пользователю
  • Теперь я пытаюсь вызвать submit с помощью модуля запросов 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) ...
    

Образец моей переменной "data" выглядит так:

{ 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", []]
  ]
}

Но я не могу найти отправленное сообщение в subreddit/r/test.

Я должен делать что-то неправильно полностью...

Ответы

Ответ 1

После прохождения другой документации, связанной с /api/submit, я обнаружил, что вы пропустили поле uh вашего образца "данных". Отсутствие uh приводит к ошибкам, которые выглядят как ваши (смотрите документацию ниже)

Здесь больше документации, связанной с тем, что я сказал:

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

Ответ 2

Попробуйте изменить заголовок User-Agent на что-то более описательное. См. Рекомендации здесь: https://github.com/reddit/reddit/wiki/API. Я слышал о том, что люди имеют проблемы с использованием общей строки пользовательского агента, например node.js.

Если у вас все еще есть проблемы, консоль Apigee (https://apigee.com/console/reddit) помогла мне отладить проблемы с помощью reddit API. Просто добавьте заголовок User-Agent и токен авторизации и беспорядок с различными параметрами через консоль, если это быстрее, чем изменение настроек вашего приложения.

Ответ 3

У меня была аналогичная проблема, и исправление (к вашей второй ошибке) заключалось в том, чтобы не отправлять как JSON, а как запрос в URI.

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

При необходимости добавьте любые другие поля.

Храните "url", "method" и "headers", которые вы использовали.

Затем он должен вернуть json так:

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