Graph REST API - чтение электронной почты (Java) - NoPermissionsInAccessToken - PullRequest
0 голосов
/ 26 февраля 2020

Цель, которую я преследую, заключается в том, что я хотел бы получить электронное письмо из Outlook 365 без какого-либо вмешательства человека. Поэтому я пытаюсь использовать MS Graph REST API и Java. Чтобы получить токен доступа, я использую:

resource=https://graph.microsoft.com

response = Unirest.post(
                String.format("https://login.microsoftonline.com/%s/oauth2/token", 
                    auth.getProperty("tenant_id")))
              .header("Content-Type", "application/x-www-form-urlencoded")
              .field("grant_type", "client_credentials")
              .field("resource", auth.getProperty("resource"))
              .field("client_id", auth.getProperty("app_id"))
              .field("client_secret", auth.getProperty("app_secret"))
              .asString();

, который возвращает строку, которая разбирается в JSON и передается в:

jsonNode = Unirest.get(
        String.format("https://graph.microsoft.com/v1.0/users/%s/mailFolders", 
                prop.getProperty("user_email")))
            .header("Accept", "application/json")
            .header("Authorization", json.get("token_type") + " " + json.get("access_token"))
            .asString();

Я получаю сообщение об ошибке: «Токен не содержит разрешений, или разрешения не могут быть поняты».

У меня нет доступа администратора к Azure AD, но у меня есть доступ к папке входящих сообщений user_mail, к которым я могу получить доступ через https://outlook.office365.com/mail/inbox.

Я чувствую, что ушел по касательной, но не уверен, что еще я могу сделать.

Кто-нибудь знаете, что нужно сделать, чтобы я мог получать электронные письма через MS-Graph API? Или лучший способ сделать это?

Цените всю помощь, которую я могу получить.

1 Ответ

0 голосов
/ 27 февраля 2020

Вам необходимо зарегистрировать приложение в Azure AD вашего арендатора и предоставить разрешения, к которым пользователю потребуется доступ.

Когда вы пытаетесь получить доступ к v1.0 / users /% s / mailFolders

Похоже, вы хотите использовать разрешения для приложений (не делегированные разрешения). Поэтому вам нужно будет использовать разрешения приложения Mail.ReadWrite, которые также потребуют согласия администратора.

Вы можете использовать это руководство, чтобы получить представление о том, как подключить Microsoft Graph, используя JAVA тоже https://docs.microsoft.com/en-us/graph/tutorials/java

...