API EN LA PUBLICACIÓN DE POWER BI

Un usuario Pregunto ✅

viniciuscastilh

Buenas tardes

Necesito integrar la api de Mercado Libre en Power BI, necesito hacer un Post dentro del Body
Pero nunca hice un Post en Power Bi, ¿podrían ayudarme?

La base para llamar a la API es la siguiente:

enrollamiento -X POST
-H ‘aceptar: aplicación/json’
-H ‘tipo de contenido: aplicación/x-www-form-urlencoded’
‘https://api.mercadolibre.com/oauth/token’
-d ‘grant_type=autorización_código’
-d ‘id_cliente=$ID_APLICACIÓN’
-d ‘cliente_secreto=$SECRET_KEY’
-d ‘code=$SERVER_GENERATED_AUTHORIZATION_CODE’
-d ‘redirect_uri=$REDIRECT_URI’


Intenté desarrollar el siguiente código, pero aún así el Token no regresa según sea necesario

dejar
cuerpo = «
{
«»grant_type»»: «»autorización_código»»,
«»Identificación del cliente»»: «»–«»,
«»secret_cliente»»: «»–«»,
«»código»»: «»–«»,
«»redirect_uri»»: «»–«»
}
«,

obtenerToken =
Json.Documento(
Web.Contents (
«https://api.mercadolibre.com»,
[
RelativePath = «/oauth/token»,
Content=Text.ToBinary(body),
Headers = [
#»ContentType» = «application/json»
]
]
)
)
en cuerpo


¿Usted me podría ayudar?

felipetreacy

Hola @viniciuscastilh

¿Funciona ese cURL POST?

La forma general para hacer un POST en PBI/PQ es

Source = Json.Document(Web.Contents(url,[
Headers = [#"Content-Type"="application/json"],
Content = Text.ToBinary(body)
]
))

En tu caso particular prueba esto

let
    api_url = "https://api.mercadolibre.com/",
    token_path = "oauth/token",
    ClientID = "xxxxxxxx",
    ClientSecret = "xxxxxxxx",
    
    EncodedCredentials = "Basic " & Binary.ToText(Text.ToBinary(ClientID & ":" & ClientSecret), BinaryEncoding.Base64),
    
    Token_Response  = Json.Document(Web.Contents(api_url,
    [ 
      RelativePath = token_path,
      Headers = [#"Content-Type"="application/x-www-form-urlencoded",#"Authorization"=EncodedCredentials],
      Content=Text.ToBinary("grant_type=authorization_code")
    ]
    )
    )
in
    Token_Response

Saludos

phil

felipetreacy

Hola @viniciuscastilh

¿Funciona ese cURL POST?

La forma general para hacer un POST en PBI/PQ es

Source = Json.Document(Web.Contents(url,[
Headers = [#"Content-Type"="application/json"],
Content = Text.ToBinary(body)
]
))

En tu caso particular prueba esto

let
    api_url = "https://api.mercadolibre.com/",
    token_path = "oauth/token",
    ClientID = "xxxxxxxx",
    ClientSecret = "xxxxxxxx",
    
    EncodedCredentials = "Basic " & Binary.ToText(Text.ToBinary(ClientID & ":" & ClientSecret), BinaryEncoding.Base64),
    
    Token_Response  = Json.Document(Web.Contents(api_url,
    [ 
      RelativePath = token_path,
      Headers = [#"Content-Type"="application/x-www-form-urlencoded",#"Authorization"=EncodedCredentials],
      Content=Text.ToBinary("grant_type=authorization_code")
    ]
    )
    )
in
    Token_Response

Saludos

phil

viniciuscastilh

En respuesta a felipetreacy

Gracias

Solución perfecta, solo tuve que hacer adaptaciones pero funcionó, ¡muchas gracias!

Saludos

Vinicius

lbendlin

Cuando publica, normalmente envía contenido al servidor. En Power Query, lo hace proporcionando un valor para el parámetro Contenido (generalmente empaquetándolo con JSON.FromValue()). Eso convertirá automáticamente la llamada GET en una llamada POST.

Web.Contents – PowerQuery M | Documentos de Microsoft

Deja un comentario

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