【发布时间】:2020-10-17 09:41:22
【问题描述】:
我正在尝试获取 outlook.com 用户邮箱的信息以及随后每封邮件的详细信息,但生成的令牌有问题。当我尝试获取消息列表时,它给了我一个 ResourceNotFound 代码。这些是我为生成令牌所采取的步骤。
1.- 微软 Azure
我在 Azure Active Directory 中注册了一个新应用程序。我已经添加了我想要从访客用户获取信息的用户,生成了一个客户端密码,将此 URI (https://localhost/myapp/) 添加为重定向 URI 并激活了 Mail.Read 权限(委托和应用程序)等等。
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 请求时,我可以检索帐户的数据。
但是当我将它用于对端点 https://graph.microsoft.com/v1.0/me/messages 的请求时,我收到错误代码 ResourceNotFound。
我有什么遗漏吗?我正在关注此链接中提供的文档:https://docs.microsoft.com/en-us/graph/auth-v2-user。提前感谢所有可以提供帮助的人。
【问题讨论】:
-
您可以尝试用
common或consumers替换您的授权URL 中的{TenantId},看看是否有帮助?这是假设您将应用注册设置为允许来自任何组织和个人帐户的用户。 -
@JasonJohnston 非常感谢!通过将“TenantId”更改为“common”,我生成了一个令牌,该令牌能够检索 Outlook 电子邮件中每条消息的消息列表和信息。我想将您的答案标记为解决方案。这可能有点跑题了,但你知道刷新令牌是否有限制吗?我希望能够持续访问收件箱,而不必每次都生成代码。
-
一般来说,只要您定期刷新令牌(同时提供新的访问令牌和新的刷新令牌),您应该能够保持访问权限,除非用户撤销它。默认情况下,如果您在 90 天内未使用刷新令牌,它就会过期。
-
租户管理员可以修改该行为。
-
@JasonJohnston 我明白了。感谢大家的帮助!
标签: email outlook postman microsoft-graph-api token