Как мне обновить менеджер для пользователя? - PullRequest
0 голосов
/ 14 мая 2019

Я использую следующий код

GraphServiceClient graphClient =
    new GraphServiceClient("https://graph.microsoft.com/v1.0",
        new DelegateAuthenticationProvider(async(requestMessage) =>
        {
            requestMessage.Headers.Authorization =
                new AuthenticationHeaderValue("bearer", await GetTokenAsync(iclientApp));
        })
    );

User currentUser = await graphClient
    .Me
    .Request()
    .GetAsync();

string filter = String.Format("startswith(surname,'{0}')", "ADTest");
var users = await graphClient.Users
    .Request()
    .Filter(filter)
    .GetAsync();

var user = users[0];
DirectoryObject userManager = new DirectoryObject();
userManager.Id = currentUser.Id;

await graphClient
    .Users[user.Id]
    .Request()
    .UpdateAsync(new User()
    {
        Manager = userManager
    });

Ошибка не выдается, но атрибут менеджера не обновляется

1 Ответ

0 голосов
/ 14 мая 2019

У вас здесь что-то не так.

  1. Это действие PUT, поэтому вы должны использовать PutAsync() вместо UpdateAsync() (то есть POST).

  2. Вы обновляете user.Id и , назначая его менеджера как user.Id.Другими словами, вы говорите Graph, что менеджер этого пользователя является самим пользователем (что, очевидно, не так).

Ваш код должен выглядеть примерно так:

// Create your client
GraphServiceClient graphClient =
    new GraphServiceClient("https://graph.microsoft.com/v1.0",
        new DelegateAuthenticationProvider(async(requestMessage) =>
        {
            requestMessage.Headers.Authorization =
                new AuthenticationHeaderValue("bearer", await GetTokenAsync(iclientApp));
        })
    );

// Get your list of users
string filter = String.Format("startswith(surname,'{0}')", "ADTest");
var users = await graphClient.Users
    .Request()
    .Filter(filter)
    .GetAsync();

// Grab the first user returned to use as the manager
var manager = users[0];

// Assign this manager to the user currently signed in
await graphClient.Me.Manager.Reference.Request().PutAsync(manager.Id);

Пример этого можно найти в модульном тесте SDK UsersTests .

...