Saltar al contenido

¿Cómo obtener el token de acceso a la API de Microsoft Graph desde Node Script?

Solución:

La respuesta de BU0 no me funcionó correctamente porque Microsoft cambió su forma de usar la API gráfica, por lo que no pude obtener todos los datos que necesitaba. Así es como lo hice usando la respuesta BU0 y este tutorial:

const request = require("request");

const endpoint = "https://login.microsoftonline.com/[Tenant]/oauth2/v2.0/token";
const requestParams = {
    grant_type: "client_credentials",
    client_id: "[ApplicationID]",
    client_secret: "[Key]",
    scope: "https://graph.microsoft.com/.default"
};

request.post({ url: endpoint, form: requestParams }, function (err, response, body) {
    if (err) {
        console.log("error");
    }
    else {
        console.log("Body=" + body);
        let parsedBody = JSON.parse(body);
        if (parsedBody.error_description) {
            console.log("Error=" + parsedBody.error_description);
        }
        else {
            console.log("Access Token=" + parsedBody.access_token);
        }
    }
});

function testGraphAPI(accessToken) {
    request.get({
        url:"https://graph.microsoft.com/v1.0/users",
        headers: {
          "Authorization": "Bearer " + accessToken
        }
    }, function(err, response, body) {
        console.log(body);
    });
}

Para ejecutar un demonio back-end no autenticado por el usuario conectado a la API Graph, desea utilizar el flujo de autenticación solo de la aplicación. Aquí hay un resumen rápido de los pasos oficiales:

  1. Cree su inquilino de Azure AD. Nota la yourtenant.onmicrosoft.com nombre y copie este valor.
  2. Registre una aplicación a través del global Azure Active Directory hoja App Registrations sección, no directamente dentro de las propiedades del inquilino. Copia el Application ID; lo necesitaremos más tarde.
  3. Cree una clave vinculada al registro y recuerde copiarla. Una vez que haga clic, no podrá recuperar el valor de la clave, así que asegúrese de copiarlo.
  4. También actualice los permisos del registro a lo que necesita, haga clic en Save, y luego también presione el Grant Permissions botón.
  5. Realice una solicitud HTTP al login.microsoftonline.com dominio para obtener un token de acceso.
  6. Utilice el token de acceso para realizar solicitudes de API Graph.

Aquí hay un enlace al ejemplo de Microsofts Node.js, y aquí hay un enlace a la documentación directa sobre la llamada HTTP a realizar para recuperar un token de acceso. Y aquí hay un ejemplo superdesarrollado que generará el token de acceso recuperado. Reemplace la [Tenant], [ApplicationID], y [Key] valores:

const request = require("request");

const endpoint = "https://login.microsoftonline.com/[Tenant].onmicrosoft.com/oauth2/token";
const requestParams = {
    grant_type: "client_credentials",
    client_id: "[ApplicationID]",
    client_secret: "[Key]",
    resource: "https://graph.windows.net"
};

request.post({ url:endpoint, form: requestParams }, function (err, response, body) {
    if (err) {
        console.log("error");
    }
    else {
        console.log("Body=" + body);
        let parsedBody = JSON.parse(body);         
        if (parsedBody.error_description) {
            console.log("Error=" + parsedBody.error_description);
        }
        else {
            console.log("Access Token=" + parsedBody.access_token);
        }
    }
});

Una vez que tenemos el access_token, podemos llamar a la API Graph. Suponiendo que los permisos de las aplicaciones se configuraron correctamente y se aplicaron desde el paso 4, podemos comenzar a realizar solicitudes de API Graph:

function testGraphAPI(accessToken) {
    request.get({
        url:"https://graph.windows.net/[Tenant]/users?api-version=1.6",
        headers: {
          "Authorization": accessToken
        }
    }, function(err, response, body) {
        console.log(body);
    });
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *