本文介绍了来自Power BI的Azure HTTP POST访问令牌请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以通过HTTP POST请求从Power BI Power Query获取Azure AD应用访问令牌?
HTTP POST请求:
//request url login.microsoftonline/<tenant id>/oauth2/token //header Content-Type: application/x-www-form-urlencoded //request body grant_type=client_credentials client_id=625bc9f6xxxxxxxxxxxxxxxxxxxxxxxxxxxxx client_secret=bCBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx resource=api://xxxxxxxxxxxxxxxxxxxxxxxxxxx引用:docs.microsoft/en-us/azure/active-directory/azuread-dev/v1-oauth2-client-creds-grant-flow#example
好的,它看起来非常简单,可以很好地处理Postman或python请求,并使用json数据显示成功响应。 现在我的问题是,我想通过Power BI power query完成此请求,这里是我的power query let apiUrl = "login.microsoftonline/<tenant id>/oauth2/token", body = "{ ""grant_type"": ""client_credentials"", ""client_id"": ""625bc9f6xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"", ""client_secret"": ""bCBxxxxxxxxxxxxxxxxxxxxxxxxxxx"", ""resource"": ""api://xxxxxxxxxxxxxxxxxxxxxxxxxxx"" }", Source = Web.Contents(apiUrl, [Headers=[#"Content-Type"="application/x-www-form-urlencoded"], Content=Text.ToBinary(body)]), FormatAsJson = Json.Document(Source) in FormatAsJson但它显示错误请求
DataSource.Error: Web.Contents failed to get contents from 'login.microsoftonline/61ed5503-xxxxxxxxxxxxxxxxx/oauth2/token' (400): Bad Request我遗漏了什么,或者为什么它显示请求不正确? 这是它不是REST API的原因吗? 还有没有其他方法可以做到这一点?
推荐答案我解决了,其实有一些额外的条款我必须添加,还有一个我自己犯的愚蠢的错误, 正确的查询
let apiUrl = "login.windows/61xxxxxxxxxxxx/oauth2/token", body = [ client_id="3728xxxxxxxxxxxxxx5", grant_type="client_credentials", client_secret="bxxxxxxxxxxxxh", resource="api://xxxxxxxxxxxxxxxx5" ], Source = Json.Document(Web.Contents(apiUrl, [Headers = [Accept = "application/json"], Content = Text.ToBinary(Uri.BuildQueryString(body))])) in Source更多推荐
来自Power BI的Azure HTTP POST访问令牌请求
发布评论