Мне нужна помощь в решении проблемы, с которой я столкнулся. У меня есть приложение, зарегистрированное в Azure с разрешениями User.Read и Mail.Read, и я пробовал следовать различным руководствам по чтению электронной почты пользователей.
Однако, почтовый ящик, к которому я пытаюсь получить доступ, - это не почтовый ящик вошедшего в систему пользователя, как предполагается в учебниках, а внешняя учетная запись почты. Как я могу предоставить приложению доступ к почтовому ящику внешнего электронного письма, не будучи вошедшим в систему пользователем? Возможно ли это вообще? Внешний адрес электронной почты добавляется как член группы, к которой принадлежит приложение в Azure.
Следуя документации Microsoft, я пробовал использовать ее для чтения электронной почты.
from msgraph import GraphServiceClient
from msgraph.generated.users.item.messages.messages_request_builder import MessagesRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
scopes = ['User.Read']
# Multi-tenant apps can use "common",
# single-tenant apps must use the tenant ID from the Azure portal
tenant_id = 'common'
# Values from app registration
client_id = 'YOUR_CLIENT_ID'
# User name and password
username = '[email protected]'
password = 'Password1!'
# azure.identity
credential = UsernamePasswordCredential(
tenant_id=tenant_id,
client_id=client_id,
username=username,
password=password)
graph_client = GraphServiceClient(credential, scopes)
query_params = MessagesRequestBuilder.MessagesRequestBuilderGetQueryParameters(
select = ["sender","subject"],
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.me.messages.get(request_configuration = request_configuration)
Но я ничего из этого не получу. Я также пробовал использовать msal и токены
app = msal.ConfidentialClientApplication(
client_id=CLIENT_ID,
client_credential=CLIENT_SECRET,
authority=AUTHORITY)
result = None
result = app.acquire_token_silent(SCOPE, account=None)
if not result:
print("No suitable token exists in cache. Let's get a new one from Azure Active Directory.")
result = app.acquire_token_for_client(scopes=SCOPE)
if "access_token" in result:
# userID taken from Azure
endpoint = f'https://graph.microsoft.com/v1.0/users/ ... er,subject'
r = requests.get(endpoint,
headers={'Authorization': 'Bearer ' + result['access_token']})
if r.ok:
print('Retrieved emails successfully')
data = r.json()
for email in data['value']:
print(email['subject'] + ' (' + email['sender']
['emailAddress']['name'] + ')')
else:
print(r.json())
Это дает мне:
{'error': {'code': 'ErrorAccessDenied', 'message': 'Access is denied. Check credentials and try again.'}}.
Подробнее здесь: https://stackoverflow.com/questions/789 ... ed-in-user
API Microsoft Graph прочитал электронную почту от не вошедшего в систему пользователя ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
API Microsoft Graph прочитал электронную почту от не вошедшего в систему пользователя
Anonymous » » в форуме Python - 0 Ответы
- 693 Просмотры
-
Последнее сообщение Anonymous
-
-
-
API Microsoft Graph прочитал электронную почту от не вошедшего в систему пользователя
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-