我有几个用户的Office365开发者帐户。我正在尝试使用Microsoft Graph API通过守护程序应用程序(即无头)访问他们的邮件。
我已经确认这些用户存在邮箱,但我收到错误:
ErrorNonExistentMailbox
No mailbox was found that includes the specified identity: `xx@yy.onmicrosoft.com`
我之前已获得一个令牌作为已注册的应用(通过apps.dev.microsoft.com
),并将其包含在以下请求网址中:
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"
}
答案 0 :(得分:1)
我发现我做错了什么。在最初请求令牌时,我使用“common”作为URL的租户部分。显然,虽然合法,但这并没有给出适当的权限。我得到的令牌,在解码时,没有列出任何权限,如果我对JWT令牌内容和格式稍微熟悉一点,这就是一个线索。
我将URL的租户部分更改为租户GUID(从AD检索)或完全限定的域名(在我的情况下类似yy.onmicrosoft.com
),我找回了另一个令牌,一个其中包括我在应用注册门户中授予的Microsoft Graph权限列表。
使用这个新令牌,我能够从我域中任何用户的邮箱中检索邮件。感谢Marc指出我正确的方向。
答案 1 :(得分:1)
只是为了澄清Aldu的答案,我确实也遇到了同样的问题。
获得 admin 同意后,可以像step 2 of the instructions一样使用/common
。
但是,然后通过client_credentials
上的https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
向Microsoft身份验证服务器请求访问令牌,我发现需要将租户替换为租户ID。那改变了我的访问令牌,并允许访问资源。