Estoy tratando de obtener un token de gráfico de Azure AD con una solicitud posterior que tiene datos de formulario a través de Axios. La respuesta arroja un error Solicitud fallida con código de estado 404 . El siguiente es el código,
const axios = require('axios') const FormData = require('form-data') const bodyFormData = new FormData() bodyFormData.append('client_id', <client id>) bodyFormData.append('client_secret', <secret>) bodyFormData.append('scope', <scope>) bodyFormData.append('requested_token_use', <token use>) bodyFormData.append('assertion', <token>) axios .post('https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/token', bodyFormData, { headers: bodyFormData.getHeaders(), }) .then((response) => { console.log('AXIOS RESPONSE ', response) }) .catch((err) => { console.log('AXIOS ERROR ', err) })La solicitud de publicación funciona bien en el cartero. La respuesta en Axios también es la esperada si se elimina bodyFormData de la solicitud de Axios. Cuando se agrega bodyFormData a la solicitud, encuentro un error.
ERROR DE AXIOS Error: la solicitud falló con el código de estado 404
En lugar de usar form-data use una cadena de querystring
const axios = require('axios') const querystring = require('querystring'); const data = querystring.stringify({ client_id: '<client id>', client_secret: '<secret>', scope: '<scope>', requested_token_use: '<token use>', assertion: '<token>' }); axios.post('https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/token', data) .then((response) => { console.log('AXIOS RESPONSE ', response) }) .catch((err) => { console.log('AXIOS ERROR ', err) });Intente eliminar la parte de los encabezados, debería funcionar.
No debería haber ninguna razón para tener que obtener los encabezados del objeto FormData, ya que es una API y usará otras formas de autenticación y podría estropear la llamada.
No es una llamada de extracción de datos que podría estar bloqueada por alguna medida de seguridad.