Шаги по воссозданию требуют:
Шаг 1. Замените «MY_CLIENT_ID» на идентификатор клиента Azure для авторизованного приложения.
https://login.microsoftonline.com/common/oauth2/authorize?client_id=MY_CLIENT_ID&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A12345&response_mode=query&resource=https%3A%2F%2Fgraph.microsoft.com%2F&state=12345&prompt=admin_consent&scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read
Шаг 2: введите URL-адрес в адресной строке веб-браузера.
Шаг 3: перейдите к разрешите приложению читать электронную почту, используя существующую учетную запись Azure. (URL-адрес браузера изменится на адрес с кодом OAuth.)
Шаг 4: Скопируйте код OAuth.
Шаг 5: В приведенной ниже команде CURL:
curl -X POST -H "content-type: application/x-www-form-urlencoded" -d "grant_type=authorization_code&code=MY_OAUTH_CODE&redirect_uri=http%3A%2F%2Flocalhost%3A12345&client_id=MY_CLIENT_ID&scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read&client_secret=MY_CLIENT_SECRET" "https://login.microsoftonline.com/common/oauth2/token"
Шаг 6: Введите команду CURL в командной консоли. (Будет возвращен действительный токен запроса.)
Шаг 7. Замените «MY_REQUEST_TOKEN» в приведенной ниже команде CURL токеном запроса и выполните команду в командной консоли.
curl -H "Authorization: Bearer MY_REQUEST_TOKEN" "https://graph.microsoft.com/v1.0/me/"
Обратите внимание, что возвращается базовая c информация учетной записи - это означает, что токен ДЕЙСТВИТЕЛЬНЫЙ.
Шаг 8: Замените «MY_REQUEST_TOKEN» в приведенной ниже команде CURL на токен запроса и выполните команду в командной консоли.
curl -H "Authorization: Bearer MY_REQUEST_TOKEN" "https://graph.microsoft.com/v1.0/me/messages"
Возвращается эта ошибка:
{ "error": { "code": "ResourceNotFound", "message": "Resource could not be discovered.", } }
Сегодня утром я смог получить доступ к сообщениям электронной почты учетной записи MS Outlook, используя URI, рекомендованные документом потока кода Microsoft OAuth здесь:
https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow
Похоже, что один или несколько параметров, которые я использовал в ходе тестирования на прошлой неделе, препятствовали доступу к электронной почте. (Или обязательный параметр отсутствовал.)
Шаг: Вставьте URI запроса кода в панель навигации браузера:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=MY_CLIENT_ID&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A12345&response_mode=query&scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fmail.read&state=12345
Шаг: скопируйте «код» из панели навигации браузера в эту команду CURL:
curl -X POST -H "content-type: application / x- www-form-urlencoded "-d" client_id = MY_CLIENT_ID & scope = https% 3A% 2F% 2Fgraph.microsoft.com% 2Fmail.read & code = MY_CODE & redirect_uri = http% 3A% 2F% 2Flocalhost% 3A12345 & grant_type = authorization_code "" https://login.microsoftonline.com/common/oauth2/v2.0/token "
Шаг: Скопируйте токен доступа из предыдущей команды CURL в эту команду CURL:
curl -H" Authorization: Bearer MY_TOKEN "" https://graph.microsoft.com/v1.0/me/messages "
Поскольку вы пытаетесь читать почту, установите разрешения для вашего зарегистрированного приложения с необходимыми разрешениями, например, Mail.ReadBasi c, Mail.Read.
Пожалуйста, go через документацию https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/api/version-2.0/mail-rest-operations
Просмотрите документацию, это код класса клиента: https://github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/src/Microsoft.Graph/Requests/Generated/GraphServiceClient.cs
Вот пример:
private static GraphServiceClient GetClient(string accessToken, IHttpProvider provider = null) { var delegateAuthProvider = new DelegateAuthenticationProvider((requestMessage) => { requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken); return Task.FromResult(0); }); var graphClient = new GraphServiceClient(delegateAuthProvider, provider ?? HttpProvider); return graphClient; }