API Outlook Python Azure/MSgraph получает ошибку токена доступа. Возможна проблема администратора с использованием входаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 API Outlook Python Azure/MSgraph получает ошибку токена доступа. Возможна проблема администратора с использованием входа

Сообщение Anonymous »

Здравствуйте, я просматриваю руководство по автоматизации Outlook API API, исходный код которого работает с использованием авторитета ='https://login.microsoftonline.com/consumers/', но наша ситуация такова, что моя мама - руководитель компании, которую я работаю (поэтому у меня также есть полный доступ от ее имени к ее логинам вместе с моим), и ее учетная запись должна быть основным общим администратором, а под ней, если я правильно понимаю, - я, а другие сотрудники поправят меня, если я ошибаюсь, и я поверь, это работа учетной записи, я также считаю, что использование идентификатора арендатора (фактический идентификатор вместо tenantid), например, Authority='https://login.microsoftonline.com/{tenant id}/' сначала работало, но затем продолжало выдавать ошибку
PS C:\Users\Nicolas\tutorial-outlook-api-crash-course> & c:/Users/Nicolas/tutorial-outlook-api-crash-course/Scripts/python.exe "c:/Users/Nicolas/tutorial-outlook-api-crash-course/ms_graph ((3 gpt))original - Копировать добавлен main.py"
APPLICATION_ID: скрыт
CLIENT_SECRET: скрыт
Попытка получить доступ токен...

Ошибка: не удалось получить токен доступа: {'error': 'invalid_grant',
'error_description': "AADSTS65001: Пользователь или администратор не дал
согласия на использование приложения со «скрытым» идентификатором под названием «приложение Azure для
api python». Отправьте интерактивный запрос авторизации для этого пользователя
и ресурса. Идентификатор трассировки: скрыт Идентификатор корреляции: скрыт Метка времени:
29.11.2024 02:49:38Z", 'error_codes': [65001], 'метка времени':
'29.11.2024 02: 49:38Z', 'trace_id': 'скрытый', 'correlation_id':
'скрытый', 'suberror': 'consent_required'

Вот полный код

Код: Выделить всё

import os
import webbrowser
import msal
from dotenv import load_dotenv

MS_GRAPH_BASE_URL = 'https://graph.microsoft.com/v1.0'

def get_access_token(application_id, client_secret, scopes):
client = msal.ConfidentialClientApplication(
client_id=application_id,
client_credential=client_secret,
authority='https://login.microsoftonline.com/(hidden-tenantID#usedhere)'

####

)

# Check if there is a refresh token stored
refresh_token = None
if os.path.exists('refresh_token.txt'):
with open('refresh_token.txt', 'r') as file:
refresh_token = file.read().strip()

if refresh_token:
# Try to acquire a new access token using the refresh token
token_response = client.acquire_token_by_refresh_token(refresh_token, scopes=scopes)
else:
# No refresh token, proceed with the authorization code flow
auth_request_url = client.get_authorization_request_url(scopes)
webbrowser.open(auth_request_url)
authorization_code = input('Enter the authorization code: ')

if not authorization_code:
raise ValueError("Authorization code is empty")

token_response = client.acquire_token_by_authorization_code(
code=authorization_code,
scopes=scopes
)

if 'access_token' in token_response:
# Store the refresh token securely
if 'refresh_token' in token_response:
with open('refresh_token.txt', 'w') as file:
file.write(token_response['refresh_token'])

return token_response['access_token']
else:
raise Exception('Failed to acquire access token: ' + str(token_response))

def main():
load_dotenv()

# Check if the environment variables are loaded correctly
APPLICATION_ID = os.getenv('APPLICATION_ID')
CLIENT_SECRET = os.getenv('CLIENT_SECRET')
print(f"APPLICATION_ID: {APPLICATION_ID}")  # Debug: Check if environment variable loaded correctly
print(f"CLIENT_SECRET: {CLIENT_SECRET}")  # Debug: Check if environment variable loaded correctly

SCOPES = ['User.Read', 'Mail.ReadWrite', 'Mail.Send']
# add print for scopes
try:
print("Attempting to get access token...")  # Debug
access_token = get_access_token(application_id=APPLICATION_ID, client_secret=CLIENT_SECRET, scopes=SCOPES)
print(f"Access Token: {access_token}")  # Debug to show if token was retrieved
headers = {
'Authorization' : 'Bearer ' + access_token
}
print(f"Headers: {headers}")  # Debug to show headers
except Exception as e:
print(f'Error: {e}')

if __name__ == "__main__":
main()

другие шаги, которые я предпринял
Я попытался переделать все это и первоначальную настройку, которая создает venv Python и регистрацию приложения Azure для переменных секрета клиента и идентификатора приложения в этом venv, используя учетная запись моей мамы (босса) Azure
из учетной записи моей мамы из Azure, что может быть неважно, поскольку я все еще получаю ту же ошибку и не знаком с Azure (и которая потребовала от меня активировать мой p2 подписка, пожалуйста, дайте мне знать, если это необходимо) мы зашли в роли и администраторы> административные блоки и создали административный блок, а также добавили себя в качестве администратора пользователя внутри этого административного блока под созданным пользователем администратора> роли и администраторы> администратор пользователя, я также попытался добавить разрешения API, такие как mail.readwrite и Male.send, но msgraph не указан как доступный вариант, где я смотрел, и оба этих других шага являются всего лишь попытками разрешения и не уверены, что они даже не имеют отношения к моему коду/его ошибка
............................

Подробнее здесь: https://stackoverflow.com/questions/792 ... -problem-u
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»