Как мне отправить заголовки в axios на nodejs? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь сделать ebay Oauth, и я столкнулся с ошибкой с помощью axios, используя простой nodejs. Я не могу на всю жизнь посылать правильные заголовки, потому что он продолжает возвращаться error_description: 'grant type in request is not supported by the authorization server'

router.get('/', function(req, res) {
let client = "client_id";
let secret = "secretServerKey";
let scopeStr = qs.escape('https://api.sandbox.ebay.com/oauth/api_scope')
// console.log(Buffer(client+":"+secret).toString('base64'))
// console.log(scopeStr)
axios.post('https://api.sandbox.ebay.com/identity/v1/oauth2/token',

  grant_type: "client_credentials",
scope:  scopeStr },

{
  headers: {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Authorization': 'Basic '+ Buffer(client+":"+secret).toString('base64')
}
}).then( tokenRes =>{

console.log(tokenRes)
res.send({result: "we've downloaded all active listings from category_id 1!" });
}).catch(e=>{
console.log(e.response.status)
console.log(e.response.statusText)
console.log(e.response.data)

})

Я пытался сделать другой тип предоставления: "authorization_code", но все равно получил тот же результат. Используя Curl, с надлежащим base64 в кодировке clientId: secret РАБОТАЕТ…

curl -X POST 'https://api.sandbox.ebay.com/identity/v1/oauth2/token' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Authorization: Basic 8u234820randomlongsjklfjj2uhjsdf=' \
  -d 'grant_type=client_credentials&scope=https%3A%2F%2Fapi.ebay.com%2Foauth%2Fapi_scope'

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

...