无法从Microsoft Graph API获取邮件

时间:2019-06-21 12:14:21

标签: azure azure-ad-graph-api

我正在尝试使用Graph API从我的Outlook帐户获取邮件。我正在使用配置了应用程序的组织Outlook帐户。

我能够从api <body class="d-flex flex-column min-vh-100"> <nav> </nav> <div class="container-fluid d-flex flex-column flex-fill align-items-center justify-content-center"> <div class="row">...</div> </div> </body> 成功获取auth2令牌,但是在查询api时,出现以下错误

https://login.microsoftonline.com/common/oauth2/v2.0/token

我使用的API是{ "error": { "code": "BadRequest", "message": "Current authenticated context is not valid for this request. This occurs when a request is made to an endpoint that requires user sign-in. For example, /me requires a signed-in user. Acquire a token on behalf of a user to make requests to these endpoints. Use the OAuth 2.0 authorization code flow for mobile and native apps and the OAuth 2.0 implicit flow for single-page web apps.", "innerError": { "request-id": "807ce785-38b6-4fbb-b670-6419768b08c3", "date": "2019-06-21T11:59:26" } } } ,而我使用的标头是:

https://graph.microsoft.com/v1.0/me/messages

我正在使用的应用程序是用于查询api的邮递员。

1 个答案:

答案 0 :(得分:1)

错误消息显示,您似乎从字面上获得的令牌没有登录的用户上下文。您可能使用OAuth2客户端凭据流来获取令牌,而调用/ me方法则需要使用隐式授予流,该隐式授予流会将用户重定向到login.microsoftonline.com进行登录,然后使用获取的(通过委派权限)令牌调用图。

因此,您基本上有两个选择:

  1. 使用委派权限,隐式授予流(用户以交互方式登录)和https://graph.microsoft.com/v1.0/me/messages
  2. 使用应用程序权限,客户端凭据授予流程(无需用户登录)和https://graph.microsoft.com/v1.0/users/ {userPrincipalName} /消息