Я пытаюсь использовать твиттер API, но необходимо пройти аутентификацию.Есть 2 типа, и мне нужно только Application-only authentication aka app only
.Это тип аутентификации, когда приложение выполняет запросы API от своего имени.
В документах объясняется, как использовать этот метод, вам необходимо использовать токен на предъявителя.Вы можете сгенерировать токен на предъявителя, передав свой ключ и секретный ключ через конечную точку POST oauth2 / token.
Вот ссылка на документы, объясняющая эту конечную точку .Есть даже пример запроса, но все же мне не очень понятно, что нужно сделать.
У меня есть ключ API и секретный ключ API, но я получаю следующую ошибку:
body: '{«errors»: [{«code»: 170, «message»: «Отсутствует обязательный параметр: grant_type», «label»: «forbidden_missing_parameter»}]}'}
Мой код на стороне сервера выглядит следующим образом
var request = require('request');
var btoa = require('btoa');
const KEY = encodeURIComponent('1234');
const SECRET = encodeURIComponent('5678');
request({
headers: {
'Authorization': 'Basic ' + btoa(`${KEY}:${SECRET}`),
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
},
uri: 'https://api.twitter.com/oauth2/token',
method: 'POST',
body: JSON.stringify({
'grant_type': 'client_credentials' // I am passing the grant_type here
})
}, function (err, res, body) {
console.log('res', res)
});
Запрос CURL в документации выглядит следующим образом:
POST /oauth2/token HTTP/1.1
Host: api.twitter.com
User-Agent: My Twitter App v1.0.23
Authorization: Basic eHZ6MWV2R ... o4OERSZHlPZw==
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 29
Accept-Encoding: gzip
grant_type=client_credentials