【问题标题】:As a office 365 admin, Can I subscribe to listen events of other 365 users events?作为 office 365 管理员,我可以订阅监听其他 365 用户事件的事件吗?
【发布时间】:2016-08-06 06:35:15
【问题描述】:

作为 Office 365 管理员,我可以订阅收听 microsoft graph 上其他 365 用户事件的事件吗? 我可以为我获取活动https://graph.microsoft.com/v1.0/me/events 或 “/v1.0/users/Admin@tenant.onmicrosoft.com/events”——工作正常......但是当管理员试图获取其他用户的事件详细信息时。我收到错误
"message": "访问被拒绝。检查凭据并重试。", https://graph.microsoft.com/v1.0/users/ABC@tenant.onmicrosoft.com

是否可以获取其他用户的事件详细信息?如果是,那么请让我知道管理员方面缺少的任何设置。如果不是,那么 api 与“/v1.0/users/”和“/v1.0/me/”有什么区别

【问题讨论】:

    标签: office365 microsoft-graph-api


    【解决方案1】:

    是的。您可以使用 Client Credential flow 来获取应用的 app-token。请确保您注册的应用程序具有 Calendars.Read 范围以读取所有邮箱中的日历,如下图:

    更多详情请参考here

    应用专用令牌的代码请求:

      public static async Task<string> GetTokenAsync(string resource, string clientId, string secrect)
        {
            string authority = "https://login.microsoftonline.com/{yourtenant}";
            AuthenticationContext authContext = new AuthenticationContext(authority);
    
            ClientCredential clientCredential = new ClientCredential(clientId, secrect);
            AuthenticationResult authResult=await authContext.AcquireTokenAsync(resource, clientCredential);
            return authResult.AccessToken;
        }
    
      public static void GetAccessTokenByClientCredential()
        {
            string clientId = "";
            string secrect = "";
            string resrouce = "https://graph.microsoft.com";
            string accessToken= TokenHelper.GetTokenAsync(resrouce, clientId, secrect).Result;
            Console.WriteLine($"Access Token: {accessToken}");
    
        }
    

    【讨论】:

    • 感谢建议的设置更改我仍然无法获取组织中其他用户的事件详细信息.. "message": "创建实体时发生错误。异常:服务器错误。状态代码:禁止,原因:禁止”。我尝试了 graph.microsoft.io API(全局管理员登录用户)graph.microsoft.com/v1.0/tenant.onmicrosoft.com/users/… -- 工作正常和graph.microsoft.com/v1.0/tenant.onmicrosoft.com/users/… -- ErrorAccessDenied
    • 您是如何获得访问令牌的?您可以从here 解析访问令牌。应用专用令牌应包含 roles 而不是 scp 声明。如果 app-only 令牌包含 roles,您应该能够看到该值包含 Calendars.Read
    • 感谢飞的快速回复,我可以授予应用程序所需的权限。但仍然无法摆脱拒绝访问错误。我的应用程序清单包含 -- oauth2Permissions :[ ... "value": "user_impersonation"] 我不确定这是否是问题所在。还尝试在清单中手动创建“appRoles”,但到目前为止没有运气。 [顺便说一下从这里下载的示例github.com/microsoftgraph/aspnet-webhooks-rest-sample]
    • 嗨飞,我不确定,如果没有从微软方面实现,这些权限是否仍然相关..
    • @ManojP 我建议您从上面提供的链接中解析令牌,以查看权限是否设置正确。您提供的示例适用于用户委托的令牌。要阅读组织中其他人的事件,您需要使用 app-only 令牌。您可以按照原始姿势中的链接获取仅限应用程序的令牌。然后您可以使用 Fiddler 轻松地发出请求。
    【解决方案2】:

    按照微软的说法,要使用 /events 端点查看另一个用户的日历,您需要一个我们仍在添加过程中的特殊权限(例如 Calendar.Read.Shared),请查看下面的链接..

    Microsoft Graph api 403 access denied when reading other users

    此主题由 Venkat Ayyadevara - MSFT 于 2016 年 4 月 21 日发布,我想仍在进行中。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多