Clientcredentials不适用于powerbirestapi

2024-06-16 11:50:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现守护进程身份验证流。 以下post请求返回一个具有正确作用域的访问令牌:

p_url = 'https://login.microsoftonline.com/' + 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' + '/oauth2/token'
data = { 'grant_type':'client_credentials',
         'client_id': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
         'client_secret': 'L------------------------------------------=',
         'resource':'https://analysis.windows.net/powerbi/api' }
r = requests.post(url=p_url, data=data)

我收到以下回复

^{pr2}$

我使用应用程序“查看端点”页面中的端点。 然而,当我试图获取“数据集”列表时,我总是收到403。获取令牌过程中可能缺少什么?在


Tags: httpscomclient身份验证urldata进程login
1条回答
网友
1楼 · 发布于 2024-06-16 11:50:19

你的流量有点短。对数据集的REST调用似乎没问题,但据我所知,您必须通过授权代码来请求访问令牌,而不仅仅是客户端凭据。在

1)获取授权码

取决于您的流程,对于网站,它将在登录过程中或使用{'response\utype':'code}调用/oauth2/authorize时收到

2)获取访问令牌

使用变量中的授权码,您必须修改请求以包含到授权代码中,如下所示(grant_type和code字段被更改):

p_url = 'https://login.microsoftonline.com/' + 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' + '/oauth2/token'
data = { 'grant_type':'authorization_code',
     'client_id': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
     'client_secret': 'L                     =',
     'code': authorizationCodeForSingedInUser,
     'resource':'https://analysis.windows.net/powerbi/api' }
r = requests.post(url=p_url, data=data)

基本上说,你必须有一个访问powerbi资源的用户帐户。您的网站(clientid+secret)不是自己授权的。一定有用户参与。在

此外,只有“组织帐户”用户才能访问power bi。在

为了明确并强调此线程中的主要原因,请发表文章和评论:powerbirestapi只能通过具有组织帐户的凭据并已在Power BI portal上登录(激活)powerbi的用户使用。您可以通过检查此用户是否能够手动使用Power BI portal来检查restapi是否可以工作。在

相关问题 更多 >