Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
2 years ago

Conexión de API de Powerbi e Intune

Soy administrador de Intune y quiero crear un dashboard con Powerbi, para ello hemos registrado una app, he conseguido consultar algunos datos pero no soy capaz de consultar las correcciones.

Después de varias pruebas he llegado a construir esta consulta:

dejar
Definir las variables necesarias
tenantId="xxxxxxxxxxxx",
clientId = "xxxxxxxxxxxxxxxx",
clientSecret = "xxxxxxxxxxxx",
tokenUrl = "https://login.microsoftonline.com/" & tenantId & "/oauth2/v2.0/token",
tokenBody = "grant_type=client_credentials&client_id=" & clientId & "&client_secret=" & clientSecret & "&scope=https://graph.microsoft.com/.default",

Obtener el token de acceso
TokenResponse = Json.Document(Web.Contents(tokenUrl, [Content = Text.ToBinary(tokenBody), Headers = [#"Content-Type"="application/x-www-form-urlencoded"]])),
accessToken = TokenResponse[access_token],

Defina el punto de conexión de Microsoft Graph para obtener los scripts de corrección mediante la versión beta
graphUrl = "https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts",

Cree una función para usar el token en la solicitud
GetWithToken = (url como texto, token como texto) como registro =>
dejar
response = Web.Contents(url, [Headers=[Authorization="Bearer" & token]])
en
Json.Document(respuesta),

Llame a la función con la dirección URL y el token
Origen = GetWithToken(graphUrl, accessToken),

Convertir el JSON en una tabla
valor = Fuente[valor],
ScriptsTable = Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

Expanda los registros de la tabla para inspeccionar todos los campos
ExpandedScriptsTable = Table.ExpandRecordColumn(ScriptsTable, "Column1", {"id", "displayName", "description"}, {"ID", "Display Name", "Description"})
en
ExpandedScriptsTable

pero me da este error y no soy capaz de solucionarlo

Expression.Error: El encabezado "Authorization" solo se admite cuando se conecta de forma anónima. Estos encabezados se pueden usar con todos los tipos de autenticación: Accept, Accept-Charset, Accept-Encoding, Accept-Language, Cache-Control, Content-Type, If-Modified-Since, Prefer, Range, Referer

2 Replies

  • Hola @Wiatt ,
    En función de la descripción, al intentar conectarse a la API de gráficos de Microsoft para obtener datos de un panel de Power BI, recibe un mensaje de error que indica que hay limitaciones en la forma en que Power Query controla determinados tipos de encabezados, especialmente cuando se usan métodos de autenticación distintos de los anónimos. Puede intentar usar funciones con opciones para eludir las limitaciones del encabezado "Autorización". Puede agregar ManualStatusHandling = {400, 401, 403, 404, 500} para que Power Query controle manualmente los códigos de estado HTTP para permitir el uso de encabezados de "autorización" incluso si la conexión no es anónima.

    // Get the access token
        TokenResponse = Json.Document(Web.Contents(tokenUrl, [
            Content = Text.ToBinary(tokenBody), 
            Headers = [#"Content-Type"="application/x-www-form-urlencoded"],
            ManualStatusHandling = {400, 401, 403, 404, 500}
        ])),
        accessToken = TokenResponse[access_token],
     // Create a function to use the token in the request
        GetWithToken = (url as text, token as text) as record =>
        let
            response = Web.Contents(url, [
                Headers=[Authorization="Bearer " & token],
                ManualStatusHandling = {400, 401, 403, 404, 500}
            ])
        in
            Json.Document(response),

    También puede consultar la siguiente documentación para obtener más instrucciones sobre el uso de la API
    Información general de Microsoft Graph - Microsoft Graph | Microsoft Learn

    Saludos
    Alberto He

    Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola @Wiatt ,

      ¿La respuesta anterior resolvió su problema y, de ser así, puede marcarla como una respuesta para que sea más fácil de encontrar para otros usuarios?

      Saludos
      Alberto He


      Si esta publicación ayuda, considere aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente