Microsoft Graph - 找不到邮箱

Microsoft Graph - No mailbox found

我有几个用户的 Office365 开发者帐户。我正在尝试使用 Microsoft Graph API.

通过守护程序应用程序(即无头)访问他们的邮件

我已验证这些用户的邮箱存在,但出现错误:

ErrorNonExistentMailbox
No mailbox was found that includes the specified identity: `xx@yy.onmicrosoft.com`

我之前获得了一个令牌作为注册应用程序(通过 apps.dev.microsoft.com)并将其包含在以下请求中 URL:

https://graph.microsoft.com/v1.0/users/xx@yy.onmicrosoft.com/messages

有指导吗?

令牌在第一次操作时是这样的:

{
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in": 0,
"access_token": "eyJ0eXAiOiJKV1QiLCJub25jZSI6IkFRQUJBQUFBQUFEWDhHQ2k2SnM2U0s4MlRzRDJQYjdyblpfdTg3QjlwS2hFeG5ncFRpS1gwczVwY2k1YnpobHZDdTFlVi1uRlFkRk0yMHlJZ1MxdnlBbC1UUnBYdGNoakxIYkhMb21hT28wb3UxaTkxYnJKRENBQSIsImFsZyI6IlJTMjU2IiwieDV0IjoiaUJqTDFSY3F6aGl5NGZweEl4ZFpxb2hNMllrIiwia2lkIjoiaUJqTDFSY3F6aGl5NGZweEl4ZFpxb2hNMllrIn0.eyJhdWQiOiJodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDcvIiwiaWF0IjoxNTI3NTM1NTU5LCJuYmYiOjE1Mjc1MzU1NTksImV4cCI6MTUyNzUzOTQ1OSwiYWlvIjoiWTJkZ1lHaTl6Zi9XNWVTTXlPZ0ppc3NxMThUSkFRQT0iLCJhcHBfZGlzcGxheW5hbWUiOiJJbmZvcm1hdGljYSBDQUkgaXoiLCJhcHBpZCI6IjQ0YTA4YWU3LTZiYzItNGEzMy04MmNiLTAzNzZhMzkxYjdhZCIsImFwcGlkYWNyIjoiMSIsImlkcCI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0Ny8iLCJ0aWQiOiI3MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDciLCJ1dGkiOiI4RnlhZUZ0ZHVFdWRjcFBNYmswYkFBIiwidmVyIjoiMS4wIn0.DMpgiNfazeDd2KsEjHAggKAg3STMeK59ls9-whHaf-UEON_fvP45ay6PrqfAnwdqz-QKmX-8ikyiM8zuE5r8IGL1d7zYzJCnIECeQwtg8OKzYJPyDW7V0RAF0yePT2fg22luGhFz5yqzjSGlxhWauZmkmXq7JrGrO7fhzAUwoJh7XJrIOlfj098LPoTrmfAaOn36hBmmcQyuFNDhW5E6oXqZsyssJ5SKvaXN_w62IrXv2-nmIkZwyqcrVlCnX_Q1ytrFuc_xItL0FFe_5MbRiF-JIxdbeFNE8LR06mFWfEGHyJu01SJvgxE9500nVzok94qCX-r5lxN0WqVLOuTqEg"

}

我发现我做错了什么。最初请求令牌时,我使用 "common" 作为 URL 的租户部分。显然,虽然合法,但这并没有给出适当的权限。我得到的令牌在解码时没有列出任何权限,如果我对 JWT 令牌的内容和格式稍微熟悉一点,这将是一个线索。

一旦我将 URL 的租户部分更改为租户 GUID(从 AD 检索)或完全限定的域名(在我的例子中类似于 yy.onmicrosoft.com),我得到了返回一个不同的令牌,其中包含我在应用程序注册门户中授予的 Microsoft Graph 权限列表。

使用这个新令牌,我能够从我域中任何用户的邮箱中检索邮件。感谢 Marc 为我指明了正确的方向。

澄清一下Aldu的回答,我也遇到了同样的问题。

征得admin同意,可以像step 2 of the instructions一样使用/common

但是,然后通过 client_credentialshttps://login.microsoftonline.com/{tenant}/oauth2/v2.0/token 从 Microsoft 身份验证服务器请求访问令牌,我发现我 需要 将租户替换为租户ID。这改变了我的访问令牌并允许访问资源。