Нужна ли мне подписка на Microsoft 365, чтобы использовать Graph API для Outlook в Python?

я пытаюсь получить все свои письма из Outlook с помощью Graph API, и я застреваю в этой ошибке

я использую делегированный поток для токена доступа я вызываю эту конечную точку «https://login.microsoftonline.com/{{TenantID}}/oauth2/v2.0/token» для получения токена доступа

AuthURl: 'https://login.microsoftonline.com/{{TenantID}}/oauth2/v2.0/authorize'

URL-адрес токена доступа: «https://login.microsoftonline.com/common/oauth2/v2.0/token».

я могу получить токен доступа, но когда я пытаюсь вызвать эту конечную точку с помощью токена доступа «https://graph.microsoft.com/v1.0/me/messages» выдает мне эту ошибку

{"error":{"code":"OrganizationFromTenantGuidNotFound","message":"The tenant for tenant guid
'28331ffe-XXXX-46af-9415-XXXXXXXXXXXX## Heading ##' does not
exist.","innerError":{"oAuthEventOperationId":"84f7039d-34b8-4e17-a66a-2c672f1a1468","oAuthEventcV":"/GzDJG2u4Bnxk14D+fZR+w.1.1","errorUrl":"https://aka.ms/autherrors#error-InvalidTenant","requestId":"ffc2a401-b871-4aa9-b1ea-3ce5739e07c8","date":"2024-06-14T06:29:26"}}}

он отлично работает в графическом обозревателе, но не в API

Насколько я исследовал, там написано, что мне нужен Microsoft 365 с активной подпиской.

@Jigar Используйте https://login.microsoftonline.com/common/oauth2/v2.0/authori‌​ze в качестве URL-адреса аутентификации. Не используйте идентификатор клиента при входе в систему с личными учетными записями Microsoft.

Sridevi 14.06.2024 09:21

Спасибо @Sridevi, теперь я могу делать вызов API

Jigar 14.06.2024 09:44
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
98
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка произошла, поскольку вы используете «идентификатор клиента» в конечной точке авторизации при входе в систему с личными учетными записями Microsoft. Чтобы устранить ошибку, используйте конечную точку /common как для запроса авторизации, так и для генерации токена.

В моем случае я выполнил следующий запрос авторизации в браузере и успешно получил значение кода после входа в личную учетную запись Microsoft:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?client_id=appId
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=Mail.Read
&state=12345

Теперь я использовал этот код для генерации токена доступа с использованием потока кода авторизации через Postman:

POST https://login.microsoftonline.com/common/oauth2/v2.0/token
grant_type:authorization_code
client_id:appId
client_secret:secret
scope:Mail.Read
code:code
redirect_uri: https://jwt.ms

Ответ:

Когда я использовал этот токен для вызова API, я успешно получил такие сообщения:

GET https://graph.microsoft.com/v1.0/me/messages

Ответ:

Обратите внимание, что по умолчанию вы получите только 10 сообщений в ответе API. Чтобы получить больше, используйте параметр запроса $top в вызове API, чтобы получить все сообщения, изменив размер страницы в соответствии с вашими требованиями:

GET https://graph.microsoft.com/v1.0/me/messages?$top=100

Ссылка: Список сообщений — Microsoft Graph

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

Microsoft Graph — доступ к стенограммам OnlineMeetings — выражение невозможно вычислить
Функции Azure, созданные в одном облачном местоположении, например на юге Индии, должны иметь возможность создать группу ресурсов в центральном месте США
Войдите в Azure B2C с помощью учетной записи OpenID (рабочая электронная почта Microsoft), но запретите пользователю регистрироваться
Как получить события группового календаря, используя разрешения только для приложений Azure? Ошибка: Доступ запрещен. Проверьте учетные данные и повторите попытку
Выполнение задания в Azure DevOps Pipelines занимает много времени
Рабочий процесс создания и развертывания .sqlproj
Как сохранить векторы, созданные AzureOpenAIEmbeddingSkill, в индексаторе с учетом моей текущей настройки
Как настроить перенаправление регистрации приложений Azure на запрошенный URL-адрес?
Служба перевода документов Azure AI: время между состоянием «Успешно» и доступностью целевых больших двоичных объектов
Невозможно получить доступ к хранилищу данных Azureml