Как преодолеть ошибку Reddit Api Unsupported_Grant_Type с помощью NodeJs - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь создать веб-клиент, который взаимодействует с API Reddit. Я следовал руководству reddit Auth2 настолько хорошо, насколько мог. Я могу перейти в раздел «Извлечение токена доступа», и в этот момент я получаю ответ «unsupported_grant_type» на мой запрос POST. Сама страница говорит, что есть два способа получить этот ответ об ошибке: «(a) отправить параметр« grant_type », который не относится к одному из известных типов предоставления, или (b) неправильно отправить параметры вашего запроса». Насколько я могу судить, я правильно создаю свой запрос.

Я просмотрел несколько разных стековых страниц, но ни одна из них не помогла с этой проблемой. Я обнаружил, что пара принятых ответов была либо неправильной, либо устаревшей.

пару страниц, которые я просмотрел до сих пор: https://www.reddit.com/r/redditdev/comments/8f4hct/unsupported_grant_type_using_json_help/ https://www.reddit.com/r/redditdev/comments/4tekpe/cannot_get_past_unsupported_grant_type_with_token/ https://www.reddit.com/r/redditdev/comments/197x36/using_oauth_to_send_valid_requests/

Я был бы очень признателен за некоторые советы о том, гдеиди отсюда.

const bodyParser = require('body-parser');
const path = require(`path`);
const express = require('express');
const app = express();
const url = require('url');
const querystring = require('querystring');
const fetch = require('node-fetch');

app.use(bodyParser.urlencoded({ extended: true }));

//my request
app.get('/code', (req, res) => {
    let rawUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
    let parsedUrl = url.parse(rawUrl);
    let parsedQs = querystring.parse(parsedUrl.query);

const pURL = 'https://www.reddit.com/api/v1/access_token';
var base64encodedData = new Buffer(client_id + ':' + client_secret).toString('base64');
var headers = {
  "Content-Type" : "application/x-www-form-urlencoded",
  "Authorization": "Basic " + base64encodedData
}
var data = {
    'code': parsedQs['code'],
    'grant_type': 'authorization_code',
    'redirect_uri': REDIRECT_URI
}

fetch(pURL, { method: 'POST', headers: headers, body: data})
  .then((res) => {
     return res.json()
})
.then((json) => {
  console.log(json);
});

    res.sendFile(path.join(__dirname, '/views/index2.html'));
});

Заранее спасибо.

...