Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Generación de tokens de acceso para la API de REST de Power BI en Power BI Desktop

Buenas tardes

No tengo mucha experiencia con Power BI, estoy intentando crear una API REST que me permita acceder a los datos de mi informe a través de Power BI Desktop.

Ya creé la aplicación en Azure, proporcioné todos los permisos necesarios, habilité el acceso y los tokens de identificador en la autenticación y proporcioné el consentimiento del administrador, hasta ahora todo bien.

Tengo la siguiente función para generar el token:

()=>
	let
		tenant_id="...",
		client_id = "...",
		client_secret = "...",
		scope = "https://analysis.windows.net/powerbi/api/.default",
		resource = "https://analysis.windows.net/powerbi/api",
		url = "https://login.microsoftonline.com/" & tenant_id & "/oauth2/token",

		body = [
			grant_type = "client_credentials",
			client_id = client_id,
			client_secret = client_secret,
			scope = scope,
			resource = resource
		],

		GetJson = Json.Document(
			Web.Contents(
				url, [
					Headers = [
						#"Accept" = "application/json",
						#"Content-Type" = "application/x-www-form-urlencoded"
					],
					Content = Text.ToBinary(Uri.BuildQueryString(body))
				]
			)
		),
		access_token = GetJson[access_token]
	in
		access_token

Genera un token de aproximadamente 1342 caracteres.

El problema es cuando uso este token para una solicitud de grupo simple, por ejemplo:

let
    access_token = GetAccessToken(),
    url = "https://api.powerbi.com/v1.0/myorg/groups?$top=100",

    GetJson = Json.Document(
        Web.Contents(
            url, [
                Headers = [
                    #"Authorization" = "Bearer " & access_token
                ]
            ]
        )
    ),

    table = Table.FromRecords({GetJson})
in
    table

El resultado es una tabla con @Data.count = 0, es decir, sin resultados. Si intento acceder a cualquier otra cosa, el resultado es un mensaje "Expression.Error: El acceso al recurso está prohibido".

Sin embargo, al iniciar sesión en la página de documentación (Grupos - Obtener grupos - API de REST (Power BI Power BI REST APIs) | Microsoft Learn) a través de "Pruébalo", se genera un token de 2614 caracteres y puedo hacer cualquier consulta y traer todo lo que necesite. Incluso si copio este token en Power BI Desktop, también obtengo el mismo resultado. Podría usarlo de forma fija, sin embargo caduca y no tiene sentido para mí tener que ir a la página de documentación para copiar el token cada vez que caduca, o peor aún, tener que decirle a mi cliente que haga esto...

Aparentemente, a través del inicio de sesión con nombre de usuario y contraseña en la página de documentación, muchos otros permisos y reglas ingresan el token para que sea más grande.

La pregunta es, ¿cómo se genera este mismo token a partir de la documentación de Power BI Desktop? ¿Es esto posible actualmente? ¿Lo estoy haciendo mal?

De todos modos, cuento con la ayuda de un alma bondadosa, ya que he estado tratando de resolver esto durante días.

¡Gracias de antemano!

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola @DaniloSantosBRS,

Sí, es posible acceder a las API de REST de Power BI desde Power BI Desktop y automatizar la generación de tokens para capturar datos en los informes.

Obtener un token de autenticación de la sección "Pruébelo" en la documentación de Microsoft Learn es una excelente manera de capturar datos y experimentar con cosas en Power BI, pero la generación de un token de autenticación debe automatizarse para actualizar los informes continuamente.

En nuestra organización, usamos scripts de PowerShell que usan registros de aplicaciones para conectarse a las API de administración de solo lectura de Power BI y capturar los datos necesarios en forma de archivos JSON, que luego se importan a Power BI.

Si desea automatizar la generación de tokens de autenticación en Power BI, le sugiero que pueda revisar algunos de los siguientes enlaces y ver si puede implementar la solución que sugieren:

Creo que los enlaces anteriores deberían ayudarlo a implementar la solución deseada. ¡Déjame saber cómo te va!

Gracias por la ayuda @Bipin-Lala,


Seguí los pasos del primer enlace para generar el token, y parece haber funcionado de la misma manera; La función genera un token sin errores.


Los videos del segundo y tercer enlace muestran cómo autenticarse usando un nombre de usuario y contraseña, pero son de hace 3 años. En las pruebas que realicé con este método, no funcionó; Devolvió un mensaje relacionado con el código de autorización. Creo que esto podría deberse a la autenticación de dos factores, que solicita al usuario que acceda a través de un navegador.

En el cuarto enlace, se muestra cómo obtener el token a través de client_credentials, que es similar al primer método, y funcionó.

Quizás el problema no esté en el código sino en algún permiso u opción que debería habilitar ya sea en Azure o en Power BI. Es extraño porque soy el administrador de la cuenta; Debería tener todos los privilegios.

Concesiones implícitas y flujos híbridos

imagem1_azure.png

Administrador del espacio de trabajo

imagem3_azure.png

Mi API de REST en Azure

imagem4_azure.png

Permisos en Azure

imagem2_azure.png

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.