![](/img/trans.png)
[英]Unable to get Department Name ,Manager Name and getting only limited users in response In Microsoft Graph API C#
[英]Unable to get Department Name , Manager etc using Microsoft Graph API C# Code
我正在使用以下代碼:
using Microsoft.Graph;
using Microsoft.Identity.Client;
using System;
namespace MSGraphAPI
{
class Program
{
private static string clientId = "XXX";
private static string tenantID = "XXXX";
private static string objectId = "XXXX";
private static string clientSecret = "XXXXX";
static async System.Threading.Tasks.Task Main(string[] args)
{
int Flag = 0;
var tenantId = "XXX.onmicrosoft.com";
var clientId = "XXXXX";
var clientSecret = "XXXXX"; // Or some other secure place.
var scopes = new string[] { "https://graph.microsoft.com/.default" };
// Configure the MSAL client as a confidential client
var confidentialClient = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithAuthority($"https://login.microsoftonline.com/XXX.onmicrosoft.com/v2.0")
.WithClientSecret(clientSecret)
.Build();
GraphServiceClient graphServiceClient =
new GraphServiceClient(new DelegateAuthenticationProvider(async (requestMessage) => {
// Retrieve an access token for Microsoft Graph (gets a fresh token if needed).
var authResult = await confidentialClient
.AcquireTokenForClient(scopes)
.ExecuteAsync();
// Add the access token in the Authorization header of the API request.
requestMessage.Headers.Authorization =
new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", authResult.AccessToken);
})
);
var users = await graphServiceClient.Users.Request().GetAsync();
do
{
foreach (User user in users)
{
Console.WriteLine(user.DisplayName);
Console.WriteLine(user.MobilePhone);
Console.WriteLine(user.BusinessPhones);
Console.WriteLine(user.DirectReports);
Console.WriteLine(user.Manager);
var directoryObject = await graphClient.Users[user.userPrincipalName].Manager
.Request()
.GetAsync();
foreach (User user1 in directoryObject )
{
// unable to print using user1.displayName
}
}
}
while (users.NextPageRequest != null && (users = await users.NextPageRequest.GetAsync()).Count > 0);
Console.WriteLine("------");
}
}
}
但是,我無法獲取 directReports 或任何用戶,我可以獲取 DisplayName 等。Azure 應用程序注冊門戶中已提供 user.Read 等權限。 我也嘗試過 user.manager 打印詳細信息,但無法打印值。 我還附上了應用程序訪問的屏幕截圖。
var directoryObject = await graphClient.Users["{id|userPrincipalName}"].Manager
.Request()
.GetAsync();
directoryObject 在調試模式下顯示 displayName,但無法將 displayName 打印為 directoryObject.displayName。
請幫助,因為我無法獲取所需的詳細信息。
首先,您需要確保用戶有管理員。 您可以使用Microsoft Graph 資源管理器進行檢查。
然后,您需要調用graphClient.Users["{id|userPrincipalName}"].Manager
來獲取經理。
var user = graphServiceClient.Users["user@XX.onmicrosoft.com"].Request().GetAsync().Result;
var manager = (User) graphServiceClient.Users["user@XX.onmicrosoft.com"].Manager.Request().GetAsync().Result;
Console.WriteLine("user_displayName: "+user.DisplayName);
Console.WriteLine("manager_displayName: "+manager.DisplayName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.