Не удалось позвонить 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": []
}