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 に答える