java - 图形 REST API -- 阅读电子邮件 (Java) -- NoPermissionsInAccessToken

标签 java microsoft-graph-api microsoft-graph-mail

我追求的目标是我希望在没有任何人工交互的情况下从 Outlook 365 获取电子邮件。 所以我尝试使用 MS Graph REST API 和 Java。 为了获取访问 token ,我使用:

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();

我收到错误消息:“ token 不包含权限,或权限无法理解。”

我没有 Azure AD 的管理员访问权限,但我可以访问 user_mail 收件箱,我可以通过 https://outlook.office365.com/mail/访问该收件箱收件箱

我感觉自己偏离了主题,但不知道还能做什么。

有谁知道需要做什么才能让我通过 MS-Graph API 接收电子邮件?或者更好的方法来做到这一点?

感谢我能得到的所有帮助。

最佳答案

您需要在租户的 Azure AD 中注册应用程序,并提供用户需要访问的权限。

当您尝试访问时 v1.0/users/%s/mailFolders

看起来您想要使用应用程序权限(而不是委派权限)。因此,您需要使用 Mail.ReadWrite 应用程序权限,这也需要管理员同意。

您也可以使用本教程来了解如何使用 JAVA 连接 Microsoft Graph https://learn.microsoft.com/en-us/graph/tutorials/java

关于java - 图形 REST API -- 阅读电子邮件 (Java) -- NoPermissionsInAccessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60403618/

相关文章:

microsoft-graph-api - 使用仅限应用的 token 时,Microsoft Graph 返回 "The token contains no permissions, ..."

microsoft-graph-api - 如何通过 Microsoft Graph API 发送 s/mime 消息?

java - Spring @Cacheable 无法在 Spring 中使用自定义键正常工作

由于单独的线程,Javafx 无法附加上下文菜单

json - Microsoft Graph 上的 AAD 应用程序注册

reactjs - Microsoft Graph - React 客户端和 spring-boot 后端的 OAuth2.0 流程

azure - 尝试使用 $expand(microsoft.graph.itemattachment/item) 读取 ItemAttachment 属性时出现 Microsoft Graph API "Access is denied"

java - Virtuoso Jena API 中的 SPARQL 查询 "COUNT"- QueryParseException

java - 如何在新的java行前面添加制表符间距

javascript - 如何使用 Microsoft-Graph 和 NodeJS 按日历名称获取日历事件?