首页 > 解决方案 > 分配许可证(Microsoft Graph API)

问题描述

我正在尝试通过 Graph API 在 C# 中分配许可证。

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

参数:

addLicenses (AssignedLicense 集合)

指定要添加的许可证的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);

我没有收到错误,但它不起作用。用户没有许可证...

标签: c#graphmicrosoft-graph-api

解决方案


我想你在这里忘记了一些东西:

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();

推荐阅读