在 Power Bi 查询函数中进行 POST REST API 调用以生成令牌,并使用该基于 JWT 的令牌进行另一个 GET API 调用

Making a POST REST API call in Power Bi Query Functions to generate a token, and used that JWT based token to make another GET API Call

我需要使用 Power Bi 查询函数进行 POST REST API 调用以获取 JWT 访问令牌。然后使用获得的相同令牌进行 GET API 调用以获取必须在 Power Bi 仪表板中显示的数据。

现在的问题是,我无法正确获取访问令牌的第一部分。我需要将客户端 ID、客户端密码和资源 uri 作为 POST API 的主体传递以获取令牌。

谁能帮我解决这个问题?

这是获取令牌的示例:

let
   url = "XXXXXXXXXXXX/api/",
   body =
    "{""client_id"":""XXX"",""client_secret"":""XXX"",""resource_uri"":""XXXXXX""}",
   Source  = 
   Json.Document(
       Web.Contents(
           url,
           [ 
               Headers = [#"Content-Type"="application/json"],
               Content=Text.ToBinary(body)
           ]
       )
   )
in
   Source

通过上述查询获取令牌后,您可以在另一个查询中使用它进行第二次调用并获取实际数据。

这就是它最终对我有用的方式:

let

    GetJson = Web.Contents("https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/oauth2/token",
        [
            Headers = [# "Accept" = "application/json",
                # "Content-Type" = "application/x-www-form-urlencoded;charset=UTF-8"
            ],
            Content = Text.ToBinary("client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx&client_secret=xx***xx:/xxx?***&resource=api://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx&grant_type=client_credentials")
        ]
    ),
    FormatAsJson = Json.Document(GetJson),
    # "Converted to Table" = Record.ToTable(FormatAsJson),
    # "Expanded Value" = Table.Last(# "Converted to Table"),
    access_token = List.Last(Record.FieldValues(# "Expanded Value")),
    source = Json.Document(Web.Contents("https://my-web-api.azurewebsites.net/api/get_my_data?Num=100", [Headers = [ContentType = "application/json"]])),
    Result = Json.Document(source)
    in
    # "Result"

请更新必需的 credentials/secrets/id 或任何相关字段以使其正常工作。但我会要求 Microsoft 或任何 Microsoft 附属的 Power Bi Developer 就这些主题创建更全面的文章或文档。