无法从Azure Active Directory中检索用户的配置文件图片



Iam无法从dot net代码中检索用户配置文件图片。我试着打印照片的高度。我得到了"未处理的异常。系统NullReferenceException:对象引用未设置为对象的实例">

Pfb程序.cs文件:

class Program
{
private static GraphServiceClient _graphClient;
static void Main(string[] args)
{
var config = LoadAppSetting();
if (config == null)
{
Console.Write("Invalid appsettings.json");
return;
}
var client = GetAuthenticatedGraphClient(config);
var graphRequest = client.Users.Request();
var results = graphRequest.GetAsync().Result;

foreach(var user in results)
{
//Console.Write(user.Id + ": " + user.DisplayName);
ProfilePhoto pro = user.Photo;
Console.Write(pro.Height);


/* DataServiceStreamResponse photo =  user.ThumbnailPhoto.DownloadAsync();
using (MemoryStream s = new MemoryStream())
{
}*/
}
Console.WriteLine("nGraph Request:");
Console.WriteLine(graphRequest.GetHttpRequestMessage().RequestUri);
}
private static IConfigurationRoot LoadAppSetting()
{

try
{
var config = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false, true)
.Build();
if (String.IsNullOrEmpty(config["applicationId"]) ||
String.IsNullOrEmpty(config["applicationSecret"]) ||
String.IsNullOrEmpty(config["redirectUri"]) ||
String.IsNullOrEmpty(config["tenantId"]))
{
return null;
}
return config;   

}
catch(System.IO.FileNotFoundException)
{
return null;
}
}
private static IAuthenticationProvider CreateAuthorizationProvider(IConfigurationRoot config)
{
var clientId = config["applicationId"];
var clientSecret = config["applicationSecret"];
var redirectUri = config["redirectUri"];
var authority = $"https://login.microsoftonline.com/{config["tenantId"]}/v2.0";
List<string> scopes = new List<string>();
scopes.Add("https://graph.microsoft.com/.default");
//var cca = new ConfidentialClientApplication(clientId, authority, redirectUri, new ClientCredential(clientSecret), null, null);

var cca = ConfidentialClientApplicationBuilder.Create(clientId)
.WithAuthority(authority)
.WithRedirectUri(redirectUri)
.WithClientSecret(clientSecret)
.Build();
return new MsalAuthenticationProvider(cca, scopes.ToArray());
}
private static GraphServiceClient GetAuthenticatedGraphClient(IConfigurationRoot config)
{
var authenticationProvider = CreateAuthorizationProvider(config);
_graphClient = new GraphServiceClient(authenticationProvider);
return _graphClient;
}
}

}

Pfb用户和应用程序持有的权限的屏幕截图。

在此处输入图像描述

此外,我可以通过邮递员检索个人资料图片,但不能通过点网。Pfb来自邮递员的截图:

在此处输入图像描述

对于少数用户来说,个人资料照片没有更新(它为null(,你可以检查是否有个人资料为null?我建议您在图形浏览中进行检查。

最新更新