在Windows 10 UWP中,我尝试使用WebAuthenticationCoreManager.RequestTokenAsync来获取使用Microsoft帐户登录的结果。 我得到了一个成功的WebTokenRequestResult。 ResponseData [0]包含带有ID的WebAccount - 但UserName为空。 调用的范围是wl.basic - 所以我应该得到很多信息...... 我不确定如何检索额外信息 - 对于当前测试,用户名就可以了。
我检查了通用样本 - 在那里我找到了一个试图做我正在尝试的片段 - webTokenRequestResult.ResponseData [0] .WebAccount.UserName。
的输出。顺便说一下 - 示例输出也是空的。
这是一个错误 - 或者我(以及样本中的MS)必须做什么来获取用户个人资料数据(或至少是用户名)?
答案 0 :(得分: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属性没有设置...... shrugs
和FYI," id"返回此处与使用身份验证请求返回的WebAccount.Id属性完全不同。