首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用microsoft图形api代表企业中的用户读取邮件

使用microsoft图形api代表企业中的用户读取邮件
EN

Stack Overflow用户
提问于 2018-11-26 15:36:00
回答 1查看 6.1K关注 0票数 1

我正试图通过管理帐户在企业中的用户邮箱中获取消息。

在我的应用程序中,我有以下权限:

我使用https://login.microsoftonline.com/common/adminconsent?...来授予应用程序在所有邮箱中读取邮件的权限,在此之后,我使用OAuth2身份验证来获得Bearer令牌。

这是从令牌端点获得的响应:

代码语言:javascript
复制
{
  "token_type": "Bearer",
  "scope": "Mail.Read User.Read User.Read.All profile openid email",
  "access_token": "<token>",
  "expires_in": 3599,
  "ext_expires_in": 3599
}

当我使用它通过https://graph.microsoft.com/v1.0/users/USER-ID/messages访问邮箱时,我得到了以下响应

代码语言:javascript
复制
{
  "error": {
    "code": "ErrorAccessDenied",
    "message": "Access is denied. Check credentials and try again.",
    "innerError": {
      "request-id": "a31bcf73-4bd6-4fed-bfee-d70328e0703e",
      "date": "2018-11-26T15:20:37"
    }
  }
}

但是,当我将这个端点与经过身份验证的管理帐户的用户ID一起使用时,我可以访问该邮箱中的消息。

但是我想通过MicrosoftGraph访问组织中所有用户的邮箱。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-26 22:19:58

Outlook端点的操作与大多数图形端点略有不同,而不是其作用域的.all变化(即user.readuser.read.all),而是取决于使用的是哪种作用域类型(委托与应用程序)。

当使用委托范围时,Mail.Read只提供对经过身份验证的用户邮箱的访问(唯一的例外是与该用户显式共享的邮箱)。

当使用应用程序作用域时,Mail.Read提供对任何用户邮箱的访问。

现在,事情变得有些不稳定了,应用的范围类型完全取决于用于获取令牌的OAuth格兰特。

  • 当使用隐式或授权代码授予时,将应用委托范围。
  • 当使用客户端凭据授予时,应用程序作用域将被应用。

因此,为了通过/v1.0/users/{someUser}/messages访问任何用户的邮箱,首先需要使用客户端凭据OAuth授予获取令牌。您可以在“获得没有用户的访问”下的文档中找到有关如何工作的演练。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53484484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档