#python #azure #azure-active-directory #powerbi
#python #azure #azure-active-directory #powerbi
Вопрос:
Я пытаюсь получить токен доступа вместо получения этого сообщения об ошибке
AdalError: Get Token request returned http error: 400 and server response: {"error":"invalid_grant","error_description":"AADSTS50034: The user account {EmailHidden} does not exist in the XXXXX directory. To sign into this application, the account must be added to the directory.rnTrace ID: f18021a8-b10a-40bf-9f0a-7975b38e2300rnCorrelation ID: 4f61c8f5-ed06-41f1-8d7b-756dd7c09e10rnTimestamp: 2020-12-16 03:27:49Z","error_codes":[50034],"timestamp":"2020-12-16 03:27:49Z","trace_id":"f18021a8-b10a-40bf-9f0a-7975b38e2300","correlation_id":"4f61c8f5-ed06-41f1-8d7b-756dd7c09e10","error_uri":"https://login.windows.net/error?code=50034"}
Мой код на python
import adal
import json
import pyodbc
import requests
AUTHORITY_URL = 'https://login.windows.net/XXXXX'
RESOURCE = 'https://analysis.windows.net/powerbi/api'
CLIENT_ID = 'XXXXX'
userid='nurdin@xxxxx.com.my'
userpassword='xxxxx'
completedtime = []
verify = []
def make_headers(access_token):
return {
'Authorization': 'Bearer {}'.format(access_token)
}
context = adal.AuthenticationContext(AUTHORITY_URL)
token = context.acquire_token_with_username_password(RESOURCE,userid,userpassword,CLIENT_ID)
access_token = token['accessToken']
print(access_token)
Комментарии:
1. Ваша учетная запись является личной учетной записью или рабочей учетной записью?
2. Рабочая учетная запись @JoyWang
3. Находится ли она под арендатором
XXXXX
https://login.windows.net/XXXXX
? Или она находится в другом клиенте?
Ответ №1:
Ваш код отлично работает на моей стороне, убедитесь, что ваша рабочая учетная запись находится под арендатором в AUTHORITY_URL
, если нет, вы можете перейти по этой ссылке, чтобы создать нового пользователя без поддержки MFA.
import adal
AUTHORITY_URL = 'https://login.windows.net/<tenant-id>'
RESOURCE = 'https://analysis.windows.net/powerbi/api'
CLIENT_ID = '<client-id>'
userid='username@tenantname.onmicrosoft.com'
userpassword='xxxxxx'
context = adal.AuthenticationContext(AUTHORITY_URL)
token = context.acquire_token_with_username_password(RESOURCE,userid,userpassword,CLIENT_ID)
access_token = token['accessToken']
print(access_token)