如何从MS Graph API返回用户特定的信息?

时间:2018-10-04 17:21:49

标签: c# microsoft-graph

我正在尝试获取与用户相关联的计划者计划的列表。我可以使用以下API调用在Graph Explorer(使用我的工作Microsoft帐户登录)中进行此操作:

https://graph.microsoft.com/v1.0/users/<my-email>/planner/plans

但是,我需要使用控制台应用程序中的令牌,因为我需要在没有用户干预的情况下将其作为计划任务运行。从我的应用程序中,我收到访问被拒绝的错误:

  

401-未经授权:由于凭据无效而拒绝访问。您无权使用以下命令查看此目录或页面   您提供的凭据。

我可以成功调用“通用”方法(例如https://graph.microsoft.com/v1.0/groups),但不能调用特定于用户的方法。

我正在使用以下方式获取令牌:

context = new AuthenticationContext("https://login.microsoftonline.com/<my_tenant");
context.AcquireTokenAsync("https://graph.microsoft.com", new ClientCredential(clientId, appKey));

我如何赋予此令牌必要的权限以读取诸如计划程序之类的内容?我已经在 Azure AD 刀片下的 Azure Portal 中进行了尝试:

enter image description here

1 个答案:

答案 0 :(得分:2)

根据您的描述,我假设您要列出用户的计划。

根据我的测试,我们可以使用以下简单代码:

public PlanClientService()
    {
        _serviceClient = GraphSdkHelper.GetGraphServiceClient();
    }
    public async Task<IList<PlannerPlan>> PlannerPlansAsync()
    {
        var plans = await _serviceClient.Me.Planner.Plans.Request().GetAsync();
        return plans;
    }

我们可以参考the simple code以获得更多详细信息。

并且根据错误描述,您应该在获得访问令牌时添加Group.Read.All, Group.ReadWrite.All权限。