API Microsoft Graph прочитал электронную почту от не вошедшего в систему пользователяPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 API Microsoft Graph прочитал электронную почту от не вошедшего в систему пользователя

Сообщение Anonymous »

Мне нужна помощь в решении проблемы, с которой я столкнулся. У меня есть приложение, зарегистрированное в 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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