Estoy trabajando en una aplicación Vue y uso Axios para el uso de API. Estoy tratando de consumir una API oauth de AWS para obtener un token y usarlo en otra API. Sin embargo, solo recibo 400 en la consola. La API funciona bien en Postman, por lo que realmente no sé cuál podría ser el problema. He mirado algunas otras preguntas aquí, pero nada ha funcionado. Aquí está mi código.
auth_api() { axios .post( 'https://myawssite.amazoncognito.com/oauth2/token', {'grant_type':'client_credentials'}, {headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': 'Basic 123qwe==' }} ) .then(response => (this.token = response)) }Al final, finalmente lo hice usando XMLHttpRequest para obtener el token. Después de investigar y hacer muchas pruebas, no pude hacerlo con Axios, Fetch, AWS-SDK o AWS-Amplify. Mientras buscaba en Internet, me detuve en una página web llamada https://reqbin.com/ . Hubo algunos ejemplos de solicitudes de publicación usando XMLHttpRequest, así que lo probé y todo funcionó.
let globalToken; // I declared this outside the export default. // This is in my created() function. const loginUrl = 'https://myawssite.amazoncognito.com/oauth2/token' let xhr = new XMLHttpRequest(); xhr.open('POST', loginUrl); xhr.setRequestHeader('Authorization', 'Basic 123qwe=='); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onreadystatechange = function() { if(xhr.readyState === 4) { console.log(xhr.status); globalToken = JSON.parse(xhr.responseText); console.log(globalToken); console.log(globalToken.access_token); } } xhr.send('grant_type=client_credentials')Solo para complementar la respuesta principal, para la API que necesitaba consumir, usé la biblioteca Superagent (aquí nuevamente Axios y los demás me fallaron, o tal vez solo soy un idiota xD). En este caso, XMLHttpRequest no funcionó.
import superagent from 'superagent' // This function is in my methods component. let login = globalToken; console.log('token is: ', login.access_token); const apiUrl = 'https://myawssite.execute-api.us-east-1.amazonaws.com/dev/test'; superagent .post(apiUrl) .send({ rut: this.rut}) .set('X-Api-Key', 'QWE123') .set('Authorization', 'Bearer ' + login.access_token) .end((err, res) => { if (err) { console.log(err); } else { console.log('rut: ', this.rut); console.log(res.text); } });