【问题标题】:Microsoft Graph API: Trying to GET messages of an Outlook mailbox but getting "ResourceNotFound" insteadMicrosoft Graph API:尝试获取 Outlook 邮箱的消息但获取“ResourceNotFound”
【发布时间】:2020-10-17 09:41:22
【问题描述】:

我正在尝试获取 outlook.com 用户邮箱的信息以及随后每封邮件的详细信息,但生成的令牌有问题。当我尝试获取消息列表时,它给了我一个 ResourceNotFound 代码。这些是我为生成令牌所采取的步骤。

1.- 微软 Azure

我在 Azure Active Directory 中注册了一个新应用程序。我已经添加了我想要从访客用户获取信息的用户,生成了一个客户端密码,将此 URI (https://localhost/myapp/) 添加为重定向 URI 并激活了 Mail.Read 权限(委托和应用程序)等等。

Azure Permissions

2.- 令牌生成

使用上一步创建的应用程序的 ID,我在浏览器中使用此 URL 生成代码并登录 Outlook 帐户:https://login.microsoftonline.com/{TenantId}/oauth2/v2.0/authorize?client_id={ClientId}&response_type=code&redirect_uri=https%3A%2F%2Flocalhost%2Fmyapp%2F&scope=offline_access%20mail.read&response_mode=query&state=12345

获得代码后,我通过 Postman 向 https://login.microsoftonline.com/{TenantId}/oauth2/v2.0/token 发出 POST 请求,其中包含根据文档所需参数的表单数据主体,其中一个是相关代码。

这样我就可以成功生成访问令牌和刷新令牌。现在,当我使用此 Token 向端点 https://graph.microsoft.com/v1.0/me/ 发出 GET 请求时,我可以检索帐户的数据。

/me/ Info GET

但是当我将它用于对端点 https://graph.microsoft.com/v1.0/me/messages 的请求时,我收到错误代码 ResourceNotFound

Error Code

我有什么遗漏吗?我正在关注此链接中提供的文档:https://docs.microsoft.com/en-us/graph/auth-v2-user。提前感谢所有可以提供帮助的人。

【问题讨论】:

  • 您可以尝试用commonconsumers 替换您的授权URL 中的{TenantId},看看是否有帮助?这是假设您将应用注册设置为允许来自任何组织和个人帐户的用户。
  • @JasonJohnston 非常感谢!通过将“TenantId”更改为“common”,我生成了一个令牌,该令牌能够检索 Outlook 电子邮件中每条消息的消息列表和信息。我想将您的答案标记为解决方案。这可能有点跑题了,但你知道刷新令牌是否有限制吗?我希望能够持续访问收件箱,而不必每次都生成代码。
  • 一般来说,只要您定期刷新令牌(同时提供新的访问令牌和新的刷新令牌),您应该能够保持访问权限,除非用户撤销它。默认情况下,如果您在 90 天内未使用刷新令牌,它就会过期。
  • 租户管理员可以修改该行为。
  • @JasonJohnston 我明白了。感谢大家的帮助!

标签: email outlook postman microsoft-graph-api token


【解决方案1】:

Jason Johnston 的评论给出了答案。通过将 {TenantId} 替换为“common”,我能够生成正确的令牌来获取我需要的信息。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多