无法使用邮递员在reddit上发表评论:USER_REQUIRED错误

时间:2018-08-28 00:18:48

标签: java rest api http post

我正在尝试使用邮递员发表评论。我正在发送以下信息:

标题:

[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

我还需要在请求中添加些什么来消除错误?

1 个答案:

答案 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提及JRAWRedditJerk