无法使用访问令牌身份验证导出 POWER BI Visual level 数据

问题描述 投票:0回答:1

我正在尝试连接 Power Bi 服务上托管的 Power Bi 报告。我的 JupyterLab 中有两个版本的代码。第一个是使用服务主体进行连接,第二个是 DeviceCodeLoginAuthentication。在服务主体方法中,当我打印报告时,我无法加载报告,它显示为 Report()。

**service principal method :**
from powerbiclient import Report, models
import requests

tenant_id = 'AAA'
client_id = 'BBB'
client_secret = 'CCC'  # Be cautious with secrets!

url = f'https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token'

headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
}

body = {
    'grant_type': 'client_credentials',
    'client_id': client_id,
    'client_secret': client_secret,
    'scope': 'https://analysis.windows.net/powerbi/api/.default'
}

response = requests.post(url, headers=headers, data=body)
if response.status_code == 200:
    # Parse the access token from the response
    access_token = response.json().get('access_token')
    #print("Access Token acquired successfully!")
    #print(access_token)  # For debugging purposes only, don't print secrets in production
else:
    # Print the error details if the token request failed
    print(f"Error: {response.status_code}")
    print(f"Error response: {response.json()}")


group_id="DDD"
report_id="EEE"

report = Report(group_id=group_id, report_id=report_id, auth=access_token)
report
**DeviceCodeLoginAuthentication method(HERE REPORT IS LOADING SUCESSFULLY) :**
from powerbiclient import Report, models
group_id="DDD"
report_id="EEE"
from powerbiclient.authentication import DeviceCodeLoginAuthentication
device_path= DeviceCodeLoginAuthentication()
display1 = Report(group_id=group_id, report_id=report_id, auth=device_path)
display1

请建议方法一中缺少什么,即服务主体。

powerbi jupyter-lab powerbi-embedded
1个回答
0
投票

您正在使用服务主体进行身份验证,但 powerbi-jupyter 库不支持这一点。该库需要嵌入令牌,而不是 AAD 令牌。 在“powerbi-jupyter”库中,我们使用“嵌入您的组织”方案,该方案特别需要 Azure Active Directory (AAD) 令牌。因此,服务主体方法不适用于该库。

更多详细信息可以参考这个文档: 嵌入 Power BI 应用程序所需的权限令牌 - Power BI |微软学习

© www.soinside.com 2019 - 2024. All rights reserved.