【问题标题】:Asp.Net Mvc 5 Azure Active Directory Get and save user profile image on serverAsp.Net Mvc 5 Azure Active Directory 在服务器上获取并保存用户配置文件图像
【发布时间】:2016-09-15 18:48:25
【问题描述】:

尝试获取登录用户的个人资料图像,然后将其保存在服务器上。

此代码来自 Startup.Auth.cs

 AuthorizationCodeReceived = async (context) =>
                           {
                               var code = context.Code;
                               ClientCredential credential = new ClientCredential(clientId, appKey);
                               string signedInUserID = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;
                               string userObjectID = context.AuthenticationTicket.Identity.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
                               AuthenticationContext authContext = new AuthenticationContext(Authority, new ADALTokenCache(signedInUserID));  
                               AuthenticationResult result = await authContext.AcquireTokenByAuthorizationCodeAsync(
                               code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, graphResourceId);
                               AuthenticationResult authenticationResult = await authContext.AcquireTokenSilentAsync(graphResourceId, credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));
                               Uri servicePointUri = new Uri(graphResourceId);
                               Uri serviceRoot = new Uri(servicePointUri, tenantId);
                               ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, async () => await Task.FromResult(result.AccessToken));
                               var res = await activeDirectoryClient.Users
                               .Where(u => u.ObjectId.Equals(userObjectID))
                               .ExecuteAsync();
                               IUser user = res.CurrentPage.ToList().First();

                               var image = await user.ThumbnailPhoto.DownloadAsync();


                           }

等待 user.ThumbnailPhoto.DownloadAsync() 抛出此错误

{"odata.error":{"code":"Request_ResourceNotFound","message":{"lang":"en","value":"Resource 'thumbnailPhoto' does not exist or one of its queried reference-property objects are not present."}}}

【问题讨论】:

    标签: c# asp.net asp.net-mvc azure azure-active-directory


    【解决方案1】:

    根据错误消息,问题的主要原因可能是没有为用户设置缩略图。在为用户设置缩略图之前运行代码时,我可以重现此问题。然后代码很适合我。

    您可以通过登录新的azure protal来检查缩略图是否设置,并比较右上角的图像,如下图:

    我通过 PowerShell 从本地 Active Directory 设置它并通过 Azure AD 连接将其同步到 Azure AD:

    Set-ADUser user1 -Replace @{thumbnailPhoto=([byte[]](Get-Content "C:\Users\UserName\Desktop\me.jpg" -Encoding byte))}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 2018-07-23
      • 2018-06-26
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      相关资源
      最近更新 更多