在 Windows 10 UWP 中,我尝试使用 WebAuthenticationCoreManager.RequestTokenAsync 从使用 Microsoft 帐户登录时获取结果。 我成功获得 WebTokenRequestResult。 ResponseData[0] 包含一个带有 ID 的 WebAccount - 但 UserName 为空。 调用的范围是 wl.basic - 所以我应该得到很多信息...... 我不确定如何检索额外信息 - 对于当前测试,用户名就可以了。
我检查了通用样本 - 在那里我发现了一个片段,它试图做我正在尝试的事情 - webTokenRequestResult.ResponseData[0].WebAccount.UserName 的输出。
顺便说一句 - 示例输出也是空的。
这是一个错误 - 或者我(以及示例中的 MS)必须做什么才能获取用户配置文件数据(或至少是用户名)?
最佳答案
根据文档 ( https://learn.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 属性完全不同。
关于windows-store-apps - WebTokenRequestResult 中的用户名为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35806838/