我正在尝试使用邮递员发表评论。我正在发送以下信息:
标题:
[1]
身体
:line.split("'")[1]
我正在将此POST请求发送到https://oauth.reddit.com/api/comment。
作为回报,我得到一个Authorization: "Bearer access_token"
Content-Type: " application/x-www-form-urlencoded"
User-Agent: "some u/user"
:
api_type: "json"
thing_id: "t3_9e04eo"
text: "some comment"
那是为什么?我已经传递了一个access_token,它被接受为正确的(否则,如果我故意传递了错误的令牌,则会收到401未经授权的错误)。
我的密码是什么
我通常的用户名:密码对
我的脚本的app_id:app_secret对
我获得了我的access_token以换取我的app_id:app_secret对。
我还尝试使用USER_REQUIRED error
类在Java中做到这一点:
{
"json": {
"errors": [
[
"USER_REQUIRED",
"Please log in to do that.",
null
]
]
}
}
但是我仍然得到错误输出:
HttpURLConnection
我还需要在请求中添加些什么来消除错误?
答案 0 :(得分:2)
根据可用的信息,我猜您没有在令牌请求中提供用户凭据,而是请求了Application Only Token。出于明显的原因,这种令牌可能无法用于在reddit上发表评论。
要为特定用户执行操作,您将需要请求访问令牌,如下所示:
reddit@reddit-VirtualBox:~$ curl -X POST -d 'grant_type=password&username=reddit_bot&password=snoo' --user 'p-jcoLKBynTLew:gko_LXELoV07ZBNUXrvWZfzE3aI' https://www.reddit.com/api/v1/access_token
{
"access_token": "J1qK1c18UUGJFAzz9xnH56584l4",
"expires_in": 3600,
"scope": "*",
"token_type": "bearer"
}
即提供用户凭据作为表单数据,并将应用程序凭据用于基本身份验证。
通常,使用已经可以用于reddit的API-Wrappers之一可能更简单。对于Java,reddit Wiki提及JRAW和RedditJerk。