1

我已按照Reddit APIWeb app的要求注册为具有范围的 Oauth 访问权限。identity, edit, flair, history, modconfig, modflair, modlog, modposts, modwiki, mysubreddits, privatemessages, read, report, save, submit, subscribe, vote, wikiedit, wikiread

我已授权我的应用程序并已将生成的代码交换为access_token具有3600秒数的有效性。

'use strict';

let request = require('request');
const USER_AGENT = 'web:com.example.server:v0.0.1 (by /u/sridharrajs)';
const token = '<my access_token within 3600 seconds validity>';

request({
  method: 'POST',
  url: 'https://www.reddit.com/api/vote',
  headers: {
    'User-Agent': USER_AGENT,
    'Authorization': `bearer ${token}`,
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  form: {
    id: "t1_9qy47p",
    dir: "1"
  },
  json: false
}, function (error, response, body) {
  if (error) {
    console.log('error', error);
  } else if (body.error) {
    console.log('body.error', body);
  }
  return console.log(body);
});

但是,当我尝试使用 API 对 reddit 提交进行投票时,我得到了一个错误。

{“消息”:“禁止”,“错误”:403}

我试图支持的链接是蒂姆库克警告“数据工业综合体”,呼吁制定全面的美国隐私法

我尝试切换两者bearer,并Bearer根据Reddit API 返回 HTTP 403中的答案,并尝试在尝试从 Reddit API 获取数据时使用 403 错误User-Agent中建议的不同。似乎没有任何工作。

我错过了什么?

4

1 回答 1

3

解决了。我需要使用https://oauth.reddit.com而不是www.reddit.com.

您现在可以代表该用户向 reddit 的服务器发出 API 请求,方法是在您的 HTTP 请求中包含以下标头:

Authorization: bearer TOKEN

带有不记名令牌的 API 请求应发送至https://oauth.reddit.com,而不是 www.reddit.com。

于 2018-10-25T14:11:30.117 回答