Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Dear,
I have a Dataverse DataFlow that connects to a third party API, which uses simple authentication.
In the first part, I get the accesstoken by putting my email address and password in the body:
AccessToken = let
GetJson = Json.Document(Web.Contents("https://xxxxx.com/api/v2/users/me/login", [Headers=[Accept="application/json", #"Content-Type"="application/x-www-form-urlencoded;charset=UTF-8"], Content=Text.ToBinary("email=xxxxxxxxxx&password=xxxxxxxxxxx")])),
data = GetJson[data],
#"Converted to Table" = Record.ToTable(data),
#"Filtered Rows" = Table.SelectRows(#"Converted to Table", each [Name] = "accessToken"),
Value = #"Filtered Rows"{0}[Value]
in Value
In the second part, I use the accesstoken to call an API request:
let
AccesTokenvalue = AccessToken,
Source = Json.Document(Web.Contents("https://xxxxxxxx.com/api/v2/getdata", [Headers=[Authorization="Bearer " & AccesTokenvalue]])),
data = Source[data]
in
data
in
data;
How can I convert this to a query where the credentials can be taken out of the query code, so that the password can remain hidden for users looking into the query?
Thanks,
Koen
Not sure how ofter your token needs to be refreshed, but one way would be to create a Dataflow with your token query, and then use that Dataflow as the source for the token.
Pat
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Hi Pat,
Would that mean that I somehow save the result of the first "accesstoken" dataflow somewhere in Dataverse? And then I should use that in the "real" dataflow?
If that's the case, I have not yet found a way to call Dataverse data in a dataflow, I probably missed the correct documentation for that somehow; can you point me to documentation / examples of your suggestion?
The token is only valid for a two minutes; I need to call the API every five minutes...
Thanks,Koen
I was proposing to use a Dataflow that only you had access to (to secure the login info), and using the output of that in a second dataflow that holds the actual data. Given your 2 and 5 minute requirements, I don't think that would work well. I don't know a good way to do what you are looking to do.
Pat
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Hi Pat,
Regardless of the fact it will not help in this particular case, I am still curious how you would "use the output" of one dataflow in another dataflow? Where would you store this output, and how would you fetch it in the other dataflow?
I will continue looking for another solution for my original question.
Thanks,
Koen
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.