Используете Python для получения токена доступа для API Rest Power BI? - PullRequest
1 голос
/ 18 июня 2020

Я нахожусь в процессе создания приложения, которое использует Rest API службы Power BI для создания панелей мониторинга PBI. Однако документация по этому поводу кажется скудной и неполной. Само по себе получение токена доступа не так уж сложно. Если вы go для любого PBI Rest API выполняете c (например, Pu sh Datasets - Datasets PostDataset ) и нажимаете «Попробовать», вы можете найти токен доступа в окне предварительного просмотра запроса. Сложность состоит в том, чтобы ваш код автоматически извлекал нужный токен.

Я нашел по крайней мере один способ сделать эту работу, но я скопировал и вставил его с онлайн-форума, не совсем понимаю его и не могу заставить его работать с паролями приложений (что является существенное). Вот этот фрагмент кода.

def retrieve_access_token(email_address, password, my_org, client_id):
    import adal
    authority_url = f'https://login.microsoftonline.com/{my_org}.com'
    context = adal.AuthenticationContext(
        authority_url,
        validate_authority=True,
        api_version=None
    )

    token = context.acquire_token_with_username_password(
        resource='https://analysis.windows.net/powerbi/api',
        username=email_address,
        password=password,
        client_id=client_id
    )

    access_token = 'Bearer ' + token['accessToken']

    return access_token

Я думаю, что этот код исходит от MS do c Получите токен доступа (Python) , но do c не содержит подробностей о значениях «авторитет» или «ресурс», что означает, что нет никакого способа изменить этот код, чтобы заставить его работать лучше, если вы вообще можете каким-то образом заставить его работать.

Я построил другая функция, основанная на видео YouTube Как выполнить Azure REST API с Postman , которая, как мне кажется, использует метод, аналогичный описанному в MS do c Платформа идентификации Microsoft и OAuth 2.0 код авторизации . Этот код может получить токен доступа, и я настроил регистрацию приложения Azure со всеми разрешениями, доступными для Power BI, но он не получает никаких ответов от PBI Rest API, и неясно, что это за токен. для. Вот этот код.

def get_access_token(tenant_id, client_id, client_secret):
    url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/token"
    payload = {'grant_type': 'client_credentials',
               'client_id': client_id,
               'client_secret': client_secret,
               'resource': 'https://management.azure.com/'}
    headers = {'Cookie': 
               'fpc=Aj6jaa6czgFGoa7atKyYeA7IWmJdAQAAAPp_ctYOAAAA; x-ms-gateway-slice=prod; stsservicecookie=ests'}
    response = requests.post(url, headers=headers, data = payload)
    return 'Bearer ' + eval(response.text)['access_token']

Кто-нибудь знает, как получить токен доступа, который работает для PBI Rest API, просто используя код (Python, если возможно), и знает ли кто-нибудь, как чтобы пароли приложений работали с ним? Выполнение всего этого из Python было нелегким делом, мягко говоря, и любая помощь будет принята с благодарностью.

ПРИМЕЧАНИЕ. Часть my_org в retrieve_access_token является псевдокодом. Чтобы он работал, вам нужно найти URL-адрес login.microsoftonline. Я выяснил это методом проб и ошибок и не могу направить вас к какой-либо дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...