Вызов PowerBi rest api и создание токена

Я хочу вызвать вызовы PowerBI rest api для загрузки файлов pbix из локального / конкретного репозитория.

  • Как мне сгенерировать токен на предъявителя для авторизации от почтальона?

  • Будет ли этот вызов api rest работать для generateToken?

  • Что нужно передать в качестве токена авторизации для этого вызова отдыха?

  • Myorg - это имя учетной записи PowerBI? откуда я могу получить значение myorg?

             POST https://api.powerbi.com/v1.0/myorg/GenerateToken
    

Ниже приведены еще несколько вызовов, которые я хочу вызвать через почтальона:

      GET https://api.powerbi.com/v1.0/myorg/imports
GET https://api.powerbi.com/v1.0/myorg/reports/{reportId}

а также несколько почтовых звонков.

Каким будет быстрое решение для генерации токена?

2 ответа

Вы можете использовать эту функцию для запроса доступа

необходимо создать идентификатор клиента в лазурном режиме https://docs.microsoft.com/en-us/power-bi/developer/embedded/register-app?tabs=customers%2CAzure

      application_id= 'None'
application_secret= 'None'
user_id= 'None'
user_password= 'None'

accessToken = None 
requestHeaders = None 
tokenExpiry = None 
accessToken_AD = None 
requestHeaders_AD = None 
tokenExpiry_AD = None 

 def pbi_auth(application_id,application_secret,user_id,user_password):
    global accessToken
    global requestHeaders
    global tokenExpiry
    data = {
        'grant_type': 'password',
        'scope': 'openid',
        'resource': "https://analysis.windows.net/powerbi/api",
        'client_id': application_id,
        'client_secret': application_secret,
        'username': user_id,
        'password': user_password
    }
    token = requests.post("https://login.microsoftonline.com/common/oauth2/token", data=data)
    assert token.status_code == 200, "Fail to retrieve token: {}".format(token.text)
    #print("Got access token: ")
    #print(token.json())
    accessToken = token.json()['access_token']

    requestHeaders= {
        'Content-Type': 'application/json; charset=utf-8',
        'Authorization': "Bearer {}".format(accessToken)
    }

pbi_auth(application_id,application_secret,user_id,user_password)
reportId= ""
URI = "https://api.powerbi.com/v1.0/myorg/reports/{}".format(reportId)
queryResults =  requests.get(URI, headers=requestHeaders)

Как мне сгенерировать токен на предъявителя для авторизации от почтальона?

Я не уверен, что с почтальоном это легко сделать. Может, тебе и не нужно. Есть варианты создания токена на предъявителя для авторизации.

  1. Аутентификация только для приложений : если вы используете этот параметр, пользователю, использующему ваше приложение, не нужно входить в систему с помощью учетной записи Azure. (Я использую этот подход прямо сейчас). Вы можете создать простой проект, который вызывает конечную точку авторизации клиента Azure, в которую вы можете передать идентификатор приложения, секрет приложения, созданный при регистрации приложения на портале Azure. Конечная точка клиента Azure AAD ответит на токен носителя авторизации.

  2. Поток кода авторизации , это поток авторизации браузера, в котором вы просите пользователя войти в свою учетную запись Azure. Токен будет отображаться в URL-адресе после входа в систему.

Будет ли работать этот вызов api для generateToken?Для вызова API-интерфейса generateToken вам понадобится токен-носитель из службы проверки подлинности. Затем конечная точка generateToken ответит на другой токен, который будет токеном авторизации для вызова других конечных точек клиента powerbi api.

Myorg - это имя учетной записи PowerBI? откуда я могу получить значение myorg?Нет, вам не нужно менять это при вызове конечной точки powerbi api.

Каким будет быстрое решение для генерации токена?Это зависит от того, какой поток аутентификации вы хотите реализовать. По моему опыту использования аутентификации только приложения. Вам необходимо выполнить некоторую настройку на портале Azure. (т.е. регистрация приложения, учетная запись участника-службы, доступ к ролям в IAM и т. д.) до того, как я получил токен доступа. Кроме того, вам может потребоваться попросить глобального администратора на портале Azure получить доступ к некоторым ресурсам (например, создать роль субъекта-службы и назначить ее приложению, которое вы зарегистрировали в службе регистрации приложений).

Другие вопросы по тегам