Назначить лицензию (Microsoft Graph API) - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь назначить лицензию в C # через Graph API.

https://docs.microsoft.com/en-us/graph/api/user-assignlicense?view=graph-rest-1.0

Параметры:

addLicenses (коллекция AssignedLicense)

Набор объектов назначенных лицензий, в которых указываются лицензии для добавления. Вы можете отключить планы, связанные с лицензией, установив disabledPlans свойство объекта назначенного лицензии.

removeLicenses (Коллекция Guid)

Набор идентификаторов GUID, идентифицирующих лицензии для удаления.

Вот мой код ...

var userQuery = await client.Users
  .Request()
  .Filter("userPrincipalName eq 'xxx@xxx.de'")
  .GetAsync();
var user = userQuery.FirstOrDefault();

var skus = await client.SubscribedSkus.Request().GetAsync();

do
{
  foreach (var sku in skus)
  {

    AssignedLicense aLicense = new AssignedLicense { SkuId = sku.SkuId };

    IList<AssignedLicense> licensesToAdd = new AssignedLicense[] { aLicense };
    IList<Guid> licensesToRemove = new Guid[] { };

    try
    {
      client.Users[user.Id].AssignLicense(licensesToAdd, licensesToRemove);
    }
  }
}
while (skus.NextPageRequest != null && (skus = await skus.NextPageRequest.GetAsync()).Count > 0);

Я не получаю ошибку, но она не работает. У пользователя нет лицензии ...

1 Ответ

1 голос
/ 01 апреля 2019

Я думаю, вы что-то забыли здесь:

client.Users[user.Id].AssignLicense(licensesToAdd, licensesToRemove);

Я думаю, это должно быть:

await client.Users[user.Id].AssignLicense(licensesToAdd, licensesToRemove).Request().PostAsync();

PS:

Вы можете получить пользователя с меньшим кодом, например:

var userQuery = await client.Users["xxx@xxx.de"].Request().GetAsync();
...