2

現在、次のコードを使用して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 アプリケーションの構成を間違えている場合。この解決策を試しましたが、残念ながら理解できませんでした。

ご意見をお待ちしております。この問題を解決するためにどこを見ればよいかをお尋ねするだけです。

前もって感謝します。

4

1 に答える 1

4

この問題を報告していただきありがとうございます。API は現在、外部アカウント (Microsoft アカウントなど) を使用して AAD にログインするユーザーをサポートしていません。この問題への対処に取り組んでおり、利用可能になったらアップデートを予定しています。

それまでの間、Azure portal を使用して通常の AAD ユーザーを作成し、そのユーザーとして API を試してみてください。

[2016 年 2 月 16 日更新: 修正が行われました。がんばってください】

于 2016-01-28T22:44:12.553 に答える