缺少 UPN 和 PUID 声明

本文关键字:声明 PUID UPN 缺少 | 更新日期: 2023-09-27 18:32:01

我目前正在尝试使用以下代码从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,内容"消息"为我提供了"缺少 UPN 和 PUID 声明"。

鉴于我对Microsoft Graph相当陌生,我不明白这到底是什么意思。如果我的逻辑或 AAD 应用程序上的某些配置有误。我已经尝试过这个解决方案,但遗憾的是我无法理解它。

非常感谢您的意见,我只询问我应该在哪里查看以解决此问题的方向。

提前谢谢。

缺少 UPN 和 PUID 声明

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

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

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