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