通过API投票时Reddit给出403

时间:2018-10-25 11:29:25

标签: node.js oauth-2.0 reddit npm-request reddit-access-token

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

我已授权我的应用,并已将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);
});

但是当我尝试upvote a reddit submission using API时,我得到了一个错误。

  

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

我要投票的链接是Tim Cook warns of ‘data-industrial complex’ in call for comprehensive US privacy laws

我尝试按照Reddit API returns HTTP 403中的答案同时切换bearerBearer,并尝试使用403 error when trying to get data from Reddit API中建议的其他User-Agent。似乎没有任何作用。

我想念什么?

1 个答案:

答案 0 :(得分:0)

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

  

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

Authorization: bearer TOKEN
     具有承载令牌的

API请求应发送至https://oauth.reddit.com,而不是www.reddit.com。