Microsoft Graph API-从共享邮箱获取消息-禁止的错误

时间:2018-12-08 01:48:55

标签: microsoft-graph microsoft-graph-sdks

我有一个守护程序服务,该服务使用用户的用户名/密码(user1@domain.com)[使用Microsoft.Identity.Client.PublicClientApplication然后使用AcquireTokenByUsernamePasswordAsync获取访问令牌来获取access_token。

Azure应用的范围为“ Mail.Read”,并且已授予“委派权限”(无需管理员同意)

我可以成功获得user1@domain.com邮箱的订阅,从而收到邮件通知。

我正在使用Graph客户端进行订阅。

var subscription = new Subscription
 {
   Resource = "users/user1@domain/mailFolders('Inbox')/messages",
   ChangeType = "created",
   NotificationUrl = "NotificationUrl",
   ClientState = Guid.NewGuid().ToString(),
   ExpirationDateTime = DateTime.UtcNow + new TimeSpan(0, 0, 15, 0) 
  };

user2@domain.com已将其邮箱共享给user1@domain.com。在azure应用程序上,我添加了“ Mail.Read.Shared”的范围,并确保单击“授予权限”(再次不需要管理员同意)。

但是,即使在此之后,我也只收到有关user1@domain.com的通知,而不是关于user2@domain.com的通知

然后我偶然发现了https://github.com/microsoftgraph/microsoft-graph-docs/blob/master/concepts/outlook-share-messages-folders.md

但是,即使我尝试通过将上述订阅中的“资源”属性更改为“ users / user2 @ domain / mailFolders('Inbox')/ messages”来获得订阅,我也会收到以下错误消息

代码:ExtensionError消息:操作:创建;例外:[状态代码:禁止;原因:禁止]

有趣的是,如果我使用通过上述指定方式收到的access_token发起对邮递员以下URL的获取请求,我可以阅读共享邮箱的邮件! (https://graph.microsoft.com/v1.0/users/user2@domain.com/mailFolders(“收件箱”)/消息)

此外,当我在修改权限并授予Mail.Read.Shared的同意后在graph Explorer上尝试相同的操作时,我可以阅读邮件。

但是,当我尝试使用Postman获取订阅时,也会收到相同的错误消息。

需要以下帮助:

  1. 要获得user2的订阅,需要进行哪些更改?
  2. 假设我可以获取user1的access_token,然后必须为user1和user2设置不同的订阅,以便使用通用的access_token接收通知,是否正确?

0 个答案:

没有答案