Microsoft graph api Microsoft Graph邮件查询-获取;错误访问被拒绝”;

Microsoft graph api Microsoft Graph邮件查询-获取;错误访问被拒绝”;,microsoft-graph-api,microsoft-graph-mail,Microsoft Graph Api,Microsoft Graph Mail,我的公司正在使用Microsoft 365业务标准许可证。我们通过这些帐户使用电子邮件。我们也有一些共享邮箱。我们正在尝试创建一个使用microsoft graph应用程序权限(而不是委派权限)的应用程序,以便应用程序可以访问其中一个共享邮箱,而无需在当前用户下进行身份验证 以下是我们迄今为止采取的步骤: 在Microsoft Azure中,我们有一个应用程序,在该应用程序中,我们已授予Mail.Read的应用程序api权限,并已接受管理员同意 我们在使用此端点的应用程序中授权为应用程序,而不

我的公司正在使用Microsoft 365业务标准许可证。我们通过这些帐户使用电子邮件。我们也有一些共享邮箱。我们正在尝试创建一个使用microsoft graph应用程序权限(而不是委派权限)的应用程序,以便应用程序可以访问其中一个共享邮箱,而无需在当前用户下进行身份验证

以下是我们迄今为止采取的步骤:

  • 在Microsoft Azure中,我们有一个应用程序,在该应用程序中,我们已授予Mail.Read的应用程序api权限,并已接受管理员同意

  • 我们在使用此端点的应用程序中授权为应用程序,而不是用户,指出发送请求所需的参数。然后,MS API构建此链接:

  • 当我们点击链接时,我们就可以看到网站上的标准授权表。登录后,将创建一个链接,我们在其中获取代码并创建令牌:http://localhost/?code={some_string}&state={some_string}&session_state={some_string}

  • 当我们尝试点击此端点时,会得到以下响应:
  • { “错误”:{ “代码”:“ErrorAccessDenied”, “消息”:“访问被拒绝。请检查凭据并重试。”, “内部错误”:{ “日期”:“2020-09-14T11:22:30”, “请求id”:“{some_string}”, “客户端请求id”:“{some_string}” } } }

    我认为命中这个端点需要我们传递之前生成的令牌和/或指定哪个应用程序进行查询

    如果您能提供帮助或指导,帮助您完成查询,我们将不胜感激。谢谢大家!

    我认为命中这个端点需要我们传递之前生成的令牌和/或指定哪个应用程序进行查询

    是的,您需要在授权标头中发送AccessToken,您还应该包括x-anchormailbox标头,该标头有助于将请求路由到正确的邮箱,例如

    GET https://graph.microsoft.com/v1.0/users/sharedmailbox@domain.com/messages HTTP/1.1
    Host: graph.microsoft.com
    Authorization: Bearer EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==
    X-AnchorMailbox: sharedmailbox@domain.com
    
    您可能需要检查的另一件事是确保您的令牌中有正确的作用域,您可以使用这些作用域

    我认为命中这个端点需要我们传递之前生成的令牌和/或指定哪个应用程序进行查询

    是的,您需要在授权标头中发送AccessToken,您还应该包括x-anchormailbox标头,该标头有助于将请求路由到正确的邮箱,例如

    GET https://graph.microsoft.com/v1.0/users/sharedmailbox@domain.com/messages HTTP/1.1
    Host: graph.microsoft.com
    Authorization: Bearer EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==
    X-AnchorMailbox: sharedmailbox@domain.com
    

    您可能需要检查的另一件事是,确保您的令牌中有正确的作用域,您可以使用该作用域

    为了使用应用程序权限,您需要使用客户端凭据身份验证流(而不是使用委派权限的授权码身份验证流)。要获取令牌,请针对“/oauth2/v2.0/token”发出请求,并在请求中指定“grant\u type=client\u credentials”。有关更多详细信息,请参见此处的客户端凭据身份验证流示例:

    要使用应用程序权限,您需要使用客户端凭据身份验证流(而不是使用委派权限的授权码身份验证流)。要获取令牌,请针对“/oauth2/v2.0/token”发出请求,并在请求中指定“grant\u type=client\u credentials”。有关更多详细信息,请参见此处的客户端凭据验证流示例: