You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Microsoft Graph API 5.19版本(C#)中分配许可证?

如何在Microsoft Graph API 5.19版本(C#)中分配许可证?

嘿,我完全懂你找不到Graph API v5+版本分配许可证方法的苦恼——毕竟版本迭代后不少旧的API调用方式都变了。下面我给你一步步拆解具体操作:

先做好准备工作

  • 确保你已经安装了Microsoft Graph的NuGet包,版本5.19及以上;
  • 确认你的应用/账户拥有足够的权限:比如应用权限需要Directory.ReadWrite.All,委托权限需要User.ReadWrite.All或Directory.ReadWrite.All,而且这些权限需要管理员提前同意。

核心代码实现

首先你需要初始化GraphServiceClient(这里以客户端凭据模式为例,你也可以根据自己的认证方式调整):

using Microsoft.Graph;
using Azure.Identity;

// 替换成你自己的租户、应用信息
var tenantId = "你的租户ID";
var clientId = "你的应用注册ID";
var clientSecret = "你的应用密钥";

var scopes = new[] { "https://graph.microsoft.com/.default" };
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(credential, scopes);

接下来就是分配许可证的关键逻辑:

try
{
    // 1. 定义要分配的许可证(替换成你实际的SKU ID)
    var licensesToAdd = new List<AssignedLicense>
    {
        new AssignedLicense
        {
            SkuId = Guid.Parse("xxx-xxx-xxx-xxx-xxx") // 许可证的SKU GUID
        }
    };

    // 2. 如果需要移除用户已有的某些许可证,在这里添加对应的SKU ID,否则留空列表
    var licensesToRemove = new List<Guid>();

    // 3. 调用API分配许可证
    await graphClient.Users["目标用户的ID或UPN(比如user@domain.com)"]
        .AssignLicense
        .PostAsync(new AssignLicensePostRequestBody
        {
            AddLicenses = licensesToAdd,
            RemoveLicenses = licensesToRemove
        });

    Console.WriteLine("许可证分配成功啦!");
}
catch (Exception ex)
{
    Console.WriteLine($"分配失败:{ex.Message}");
}

小提示:怎么获取许可证的SKU ID?

你可以通过调用Graph API获取租户内所有可用的许可证SKU,代码示例如下:

var subscribedSkus = await graphClient.SubscribedSkus.GetAsync();
foreach (var sku in subscribedSkus.Value)
{
    Console.WriteLine($"SKU名称:{sku.SkuPartNumber},ID:{sku.SkuId}");
}

运行这段代码就能拿到所有可用许可证的SKU ID,直接替换到上面的分配代码里就行。

备注:内容来源于stack exchange,提问作者Doruk Han

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:14:51