缺少UPN和PUID声明

时间:2016-01-27 09:52:46

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

我目前正尝试使用以下代码从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,但遗憾的是我无法理解。

我非常感谢您的意见,我只是询问指示我应该在哪里解决此问题。

提前致谢。

1 个答案:

答案 0 :(得分:4)

感谢您报告此问题。 API目前缺乏对使用外部帐户(如Microsoft帐户)登录AAD的用户的支持。我们正在努力解决这个问题,并希望在可用时进行更新。

与此同时,尝试使用Azure门户创建常规AAD用户,并尝试以该用户身份使用API​​。

[更新 - 2016-2-16:修复现已到位。请试一试]