目前,我正在使用控制台应用程序(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"
}
}
}
有没有不同的方式或者没有犯错?
答案 0 :(得分:2)
您必须在AAD中注册应用程序并获取持有者令牌 - 图形API不支持基本身份验证,这是您的代码正在执行的操作。您链接的文档将引导您完成整个过程。