Попытка получить информацию о профиле пользователя из Azure с помощью Graph - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь получить информацию о профиле пользователя из Azure с помощью Graph. Если я загружаю один из примеров, он работает, но я не могу понять это для реального приложения. У меня не было проблем с регистрацией приложения на новом портале приложений, но я не могу успешно просмотреть данные профиля пользователя. Вот некоторый код:

[Authorize]
public async Task<ActionResult> About() {
    try {
        string signedInUserID = ClaimsPrincipal
            .Current
            .FindFirst(ClaimTypes.NameIdentifier)
            .Value;

        TokenCache userTokenCache = new MSALSessionCache(signedInUserID, this.HttpContext)
            .GetMsalCacheInstance();

        ConfidentialClientApplication cca = new ConfidentialClientApplication(
            clientId,
            redirectUri,
            new ClientCredential(appKey),
            userTokenCache,
            null);

        if (cca.Users.Count() > 0) {

            string[] scopes = { "User.Read" };

            AuthenticationResult result =
                await cca.AcquireTokenSilentAsync(scopes, cca.Users.First());

            HttpClient hc = new HttpClient();
            hc.DefaultRequestHeaders.Authorization =
                new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", result.AccessToken);

            HttpResponseMessage hrm = await hc.GetAsync("https://graph.microsoft.com/v1.0/me/");
            string rez = await hrm.Content.ReadAsStringAsync();
            ViewBag.Message = rez;

            ViewBag.UserName = ClaimsPrincipal.Current.FindFirst("preferred_username").Value;

        } else { }
        return View();
    } catch (MsalUiRequiredException) {
        ViewBag.Relogin = "true";
        return View();
    } catch (Exception eee) {
        ViewBag.Error = "An error has occurred. Details: " + eee.Message;
        return View();
    }
}

После входа я ничего не вижу в представлении:

@{
    ViewBag.Title = "About";
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>

<p>Use this area to provide additional information.</p>
@{
    if (ViewBag.Error != null)
    {
        <p class="red">Error: @ViewBag.Error</p>
    }
}

<div>Name: @ViewBag.UserName</div>
<div>ObjectId: @ViewBag.ObjectId </div>
<div>Given Name: @ViewBag.GivenName </div>
<div>Surname: @ViewBag.Surname </div>
<div>UPN: @ViewBag.UPN</div>
<div>Home phone: @ViewBag.HomePhone</div>
<div>Mobile phone: @ViewBag.MobileNumber</div>
<div>Other phone: @ViewBag.OtherPhone</div>
<div>User Data: @ViewBag.UserData</div>
...