我目前正尝试使用以下代码从Microsoft Graph访问特定资源:
private const string _userUrl = "https://graph.microsoft.com/v1.0/me";
public static async Task<UserProfile> GetUserProfile()
{
using (var client = new HttpClient())
{
using (var req = new HttpRequestMessage(HttpMethod.Get, _userUrl))
{
var token = await GetToken(true);
req.Headers.Add("Authorization", string.Format("Bearer {0}", token));
req.Headers.TryAddWithoutValidation("Content-Type", "application/json");
using (var response = await client.SendAsync(req))
{
var content = await response.Content.ReadAsStringAsync();
UserProfile profile = JsonConvert.DeserializeObject<UserProfile>(content);
return profile;
}
}
}
}
GetToken返回预期的授权承载令牌,但代码到达时:
var content = await response.Content.ReadAsStringAsync();
响应状态代码为400,内容&#34;消息&#34;给了我一个&#34;缺少UPN和PUID声明&#34;。
鉴于我对Microsoft Graph相当新,我不明白这究竟是什么意思。如果我在我的逻辑或我的AAD应用程序上的某些配置上犯了错误。我已经尝试this solution,但遗憾的是我无法理解。
我非常感谢您的意见,我只是询问指示我应该在哪里解决此问题。
提前致谢。
答案 0 :(得分:4)
感谢您报告此问题。 API目前缺乏对使用外部帐户(如Microsoft帐户)登录AAD的用户的支持。我们正在努力解决这个问题,并希望在可用时进行更新。
与此同时,尝试使用Azure门户创建常规AAD用户,并尝试以该用户身份使用API。
[更新 - 2016-2-16:修复现已到位。请试一试]