microsoft-graph-api - Microsoft Graph API - 从共享邮箱获取消息 - 禁止错误
问题描述
我有一个守护进程服务,它使用用户的用户名/密码(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 的通知
但是,即使我尝试通过将上述订阅中的 Resource 属性更改为“users/user2@domain/mailFolders('Inbox')/messages”来获取订阅 - 我收到以下错误
代码:扩展错误消息:操作:创建;例外:[状态代码:禁止;原因:禁止]
有趣的是,如果我使用使用上述指定方式收到的 access_token 向 Postman 上的以下 url 发起获取请求,我可以阅读共享邮箱的邮件!(https://graph.microsoft.com/v1.0/users/user2@domain.com/mailFolders('收件箱')/messages)
此外,当我在修改权限并同意 Mail.Read.Shared 后在图形浏览器上尝试相同的操作时,我可以阅读邮件。
但是,当我尝试使用 Postman 获取订阅时,我收到了相同的错误消息。
在以下方面需要帮助:
- 要获得 user2 的订阅,需要进行哪些更改?
- 假设我可以获取 user1 的 access_token 然后我必须为 user1 和 user2 设置不同的订阅以便使用通用 access_token 获取通知是否正确?
解决方案
推荐阅读
- laravel - 如何将字符串连接到刀片中的$变量?
- security - URL 中的 flask-SocketIO sessionId 不安全
- react-native - Websocket 服务始终运行
- node.js - 在加载 browersify 隐蔽的 npm 包并在脚本标签中使用它时出错?
- reactjs - 如何跟踪用户是否登录我的网站?
- node.js - 如何为机器人输入角色以在多个服务器中访问它的命令?
- laravel - 我怎样才能使多边形的内部可点击?
- c++ - 难以创建 Spdlog 异步文件记录器
- ms-access - 如果选中 Microsoft Outlook 16.0 对象库引用,则功能区回调函数不起作用
- python - 编写python类以计算两个数字的总和时出错