如何在我的控制台应用程序中获取Microsoft图形结果?

时间:2017-02-24 11:05:10

标签: c# azure azure-active-directory microsoft-graph

目前,我正在使用控制台应用程序(Visual Studio 2015)来获取组成员详细信息(邮件ID和名称)。为此,我搜索了很多,以便在我的应用程序中获得Microsoft Graphs输出。我发现一个document表示将我的应用注册到Azure门户。但我不想这样做。我试图达到我的想法。

我可以在Graph Explorer中获得所需的输出。如果我在浏览器中使用相同的API URL,则意味着我收到以下错误。

{
"error": {
"code": "InvalidAuthenticationToken",
"message": "Bearer access token is empty.",
"innerError": {
"request-id": "823434fb-a2cc-44a7-9bb7-1249c02f54a5",
"date": "2017-02-24T09:45:05"
    }
  }
}

例如,如果我在Graph explorer输入框中使用以下URL意味着我得到了我想要的输出。但是如果我在浏览器的URL框中使用相同的URL,我会收到错误。

  ?

https://graph.microsoft.com/v1.0/groups/922345b-4sc6-443c-ac69-02bh73536570/members $顶部= 900安培; $选择= ID,显示名

图表浏览器网址是否在普通浏览器中运行? 如果是,则表示我该怎么做?

更新

我尝试使用以下代码获取输出

        string URL = "https://graph.microsoft.com/v1.0/groups/922345b-4sc6-443c-ac69-02bh73536570/members?$top=900&$select=id,displayName";
        System.Net.Http.HttpClient client = new    System.Net.Http.HttpClient();
        client.BaseAddress = new System.Uri(URL);
        byte[] cred = UTF8Encoding.UTF8.GetBytes("mailid@domain.com:mypassword");
        client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(cred));
        client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
        HttpResponseMessage messge = client.GetAsync(URL).Result;
        string result = messge.Content.ReadAsStringAsync().Result;

但我在string result

中得到了以下输出
{
"error": {
"code": "InvalidAuthenticationToken",
"message": "CompactToken parsing failed with error code: -2147184105",
"innerError": {
  "request-id": "8gd6720-d558-4bbd-a0b8-fd098gw30f0b",
  "date": "2017-02-24T11:03:34"
  }
 }
}

有没有不同的方式或者没有犯错?

1 个答案:

答案 0 :(得分:2)

必须在AAD中注册应用程序并获取持有者令牌 - 图形API不支持基本身份验证,这是您的代码正在执行的操作。您链接的文档将引导您完成整个过程。