Forum Discussion

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

Autenticación de API web con clave de API

Hola a todos

Tengo problemas para obtener datos de la API web. Obtuve la url y la clave api del cliente. En Postman iam pasando la url con encabezado como clave de API y valor de clave. Pero en Power BI, en el parámetro http request no puedo encontrar la clave de API. No puedo simplemente pasar la url ya que dice que el acceso está prohibido. así que manualmente le di la API KEY y el valor, pero dice que apikey funciona solo con acceso anónimo.

No estoy seguro de cómo seguir adelante. por favor ayúdame a salir de esto

6 Replies

  • Hay @vamshikrishna20

    ¿A qué API está intentando acceder?

    Probablemente necesite pasar el nombre de usuario / contraseña / clave api como parte de los encabezados de solicitud. No sé exactamente cómo su API requiere esto o qué quiere decir con una clave de API, pero he visto API donde la clave de API se pasa como el nombre de usuario y la contraseña se deja en blanco.

    Pruebe este código y deje la contraseña como ""

        Username = "xxxxxxxx",
        Password = "",
        
        EncodedCredentials = "Basic " & Binary.ToText(Text.ToBinary(Username & ":" & Password ), BinaryEncoding.Base64),
        
        Token_Response  = Json.Document(Web.Contents(api_url,
        [ 
          Headers = [#"Content-Type"="application/x-www-form-urlencoded",#"Authorization"=EncodedCredentials],
          Content=Text.ToBinary("grant_type=client_credentials")
        ]
        )
        )

    Saludos

    Phil

  • Hay @vamshikrishna20

    ¿Cómo especifica la API que se utiliza la clave de API para conectarse a ella? No sé, la documentación de la API debería decírtelo.

    ¿Cómo obtuviste la clave de API?

    Saludos

    Phil

  • Hay @vamshikrishna20

    No ha dicho a qué API está intentando acceder o si ha comprobado la documentación de la API que debería indicarle cómo conectarse a ella y obtener datos.

    Otra forma de realizar la consulta es esta

    let
        api_url = "https://api.com",
        ClientID = "",
        apikey = "YOUR-API-KEY",
        
        EncodedCredentials = "Basic " & Binary.ToText(Text.ToBinary(ClientID & ":" & apikey), BinaryEncoding.Base64),
    
        data= Json.Document(Web.Contents(api_url,
       [ 
         Headers = [#"Authorization"=EncodedCredentials]
       ]
       )
       )
    
    in
        data

    Este formato funciona con una API como Mailchimp que solo proporciona una clave de API.

    Saludos

    Phil

  • Hay @vamshikrishna20 ,

    Mediante el uso de un proxy de función de Azure, es posible omitir la restricción de Power BI de no poder realizar la autenticación anónima en orígenes de datos web que requieren una clave de API.

    para obtener más información, consulte:
    https://blog.kloud.com.au/2018/07/23/use-anonymous-authentication-on-web-data-sources-with-a-api-key-in-url/

    ¿Respondí a su pregunta? Marcar mi publicación como solución!


    Saludos

    Lucien

  • Hola @vamshikrishna20 sé que esta respuesta es muy tardía jajaja. Como solución alternativa, tal vez pueda usar un conector de 3rd party, puede ahorrarle mucho tiempo en comparación con otras opciones. He probado windsor.ai, supermétricas (que no tienen PBI como destino, por lo que primero tienes que exportar a Google Sheets y luego exportar a PBI) y funnel.io. Me quedé con windsor porque es mucho más barato, así que solo para darte a conocer otras opciones. En caso de que te lo preguntes, para hacer la conexión primero busca el conector de Mailchimp en la lista de fuentes de datos:

    Después de eso, primero tendrás que crear una clave API secreta en tu cuenta de Mailchimp y luego, usando tus credenciales, agregar tu cuenta a la plataforma.

    Una vez que haya hecho esto, puede continuar e ir al paso "Vista previa y destino"

    Allí sólo tienes que seleccionar los campos que necesitas. Finalmente, simplemente seleccione PBI como destino de sus datos y finalmente simplemente copie y pegue la url en PBI --> Get Data --> Web --> Pegue la url.