3

在 Windows 10 UWP 中,我尝试使用 WebAuthenticationCoreManager.RequestTokenAsync 从使用 Microsoft 帐户的登录中获取结果。我得到一个成功的 WebTokenRequestResult。ResponseData[0] 包含一个带有 ID 的 WebAccount - 但 UserName 为空。调用的范围是 wl.basic - 所以我应该得到很多信息......我不知道如何检索额外的信息 - 对于当前的测试,用户名就可以了。

我检查了通用样本——在那里我找到了一个片段,它试图做我正在尝试的事情——webTokenRequestResult.ResponseData[0].WebAccount.UserName 的输出。

顺便说一句 - 示例输出也是空的。

这是一个错误 - 还是我(以及示例中的 MS)必须做什么才能获取用户个人资料数据(或至少是用户名)?

4

1 回答 1

1

根据文档(https://docs.microsoft.com/en-us/windows/uwp/security/web-account-manager),您必须进行特定的 REST API 调用才能检索它:

var restApi = new Uri(@"https://apis.live.net/v5.0/me?access_token=" +     result.ResponseData[0].Token);

using (var client = new HttpClient())
{
    var infoResult = await client.GetAsync(restApi);
    string content = await infoResult.Content.ReadAsStringAsync();

    var jsonObject = JsonObject.Parse(content);
    string id = jsonObject["id"].GetString();
    string name = jsonObject["name"].GetString();
}

至于为什么没有设置 WebAccount 属性......耸了耸肩

仅供参考,此处返回的“id”与身份验证请求返回的 WebAccount.Id 属性完全不同。

于 2017-11-02T17:21:51.440 回答