【问题标题】:MS.Graph api - how to get another user's events when 'Application Permission'MS.Graph api - 如何在“应用程序权限”时获取另一个用户的事件
【发布时间】:2023-01-11 14:04:22
【问题描述】:

“委派权限”工作正常。

如何在使用 Microsoft.Graph API 的“应用程序权限”时获取其他用户的事件。

我确认了这个错误。

Microsoft.Graph.ServiceException: '代码:ErrorAccessDenied 消息:访问被拒绝。检查凭据并重试。ClientRequestId:下面是导致错误的代码和JWT值的权限。

  1. 代码
                if ((await graphClient.Users.Request()
                                                    .Filter("UserPrincipalName eq 'test@test.com'")
                                                    .GetAsync()).FirstOrDefault()
                                                    is User test)
                { // target user - test@test.com   (example)
    
                    var events2 = await graphClient.Users[test.Id].Events.Request()
                        .Header("Prefer", "outlook.timezone=\"Korea Standard Time\"")
                        .Select("subject,body,bodyPreview,organizer,attendees,start,end,location")
                        .GetAsync();
    
                    //  raise error
                    //  Microsoft.Graph.ServiceException: 'Code: ErrorAccessDenied
                    //  Message: Access is denied.Check credentials and try again.
                    //  ClientRequestId: 
                }
    
    1. 角色(JWT - 解码)
    
      "roles": [
        "User.ReadBasic.All",
        "OnlineMeetings.Read.All",
        "Calendars.Read",
        "Mail.ReadBasic.All",
        "Group.Read.All",
        "EventListener.Read.All",
        "Directory.Read.All",
        "RoleManagement.Read.All",
        "User.Read.All",
        "Domain.Read.All",
        "Schedule.Read.All",
        "Calendars.ReadBasic.All",
        "Team.ReadBasic.All",
        "Mail.Read",
        "AppRoleAssignment.ReadWrite.All",
        "Mail.ReadBasic"
      ],
    

    enter image description here

    我的工作经历。解决

    1. 许可已更改 添加/删除应用程序权限和委托权限。
    2. 身份验证类型更改(安全密钥 <-> 证书)
    3. 测试其他代码(使用github示例项目)
    4. JWT 检查和测试 Grape-explorer
    5. 限制对特定 Exchange Online 邮箱的应用程序权限(添加/删除)
    6. 配置应用程序访问在线会议(添加/删除)

      我需要你的帮助

【问题讨论】:

    标签: c# microsoft-graph-api


    【解决方案1】:

    您能否尝试使用Client Credential flow 在无需用户交互的情况下安全地获取令牌。

    我可以看到您拥有 Calendars.Read 应用程序权限,因为您希望代表用户访问,请尝试添加 Calendars.Read 委托权限。

    希望这可以帮助 。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      相关资源
      最近更新 更多