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

如何在C#中使用仅应用凭据查询SharePoint术语库?

使用PnP Framework SDK通过仅应用权限读取SharePoint Online术语库

可行实现方案

1. 先完成应用权限配置

在Azure AD应用注册中,给你的应用添加SharePoint Online的应用权限:

  • 勾选TermStore.Read.All(刚好满足术语库只读需求)
  • 必须让租户管理员完成权限授予同意,否则应用无法正常调用接口

2. 用客户端密钥初始化PnPContext

PnP Framework完全支持通过客户端密钥(client_id + client_secret)创建PnPContext,只需通过ClientSecretAuthenticationProvider配置认证逻辑即可。以下是完整代码示例:

先引入必要的命名空间:

using PnP.Core;
using PnP.Core.Auth;
using PnP.Core.Services;

核心实现代码:

// 替换为你的实际参数
var tenantId = "你的租户ID";
var clientId = "你的应用客户端ID";
var clientSecret = "你的应用客户端密钥";
var siteUrl = "https://你的租户名.sharepoint.com"; // 用租户根站点即可,术语库属于租户级资源

// 创建认证提供器
var authProvider = new ClientSecretAuthenticationProvider(tenantId, clientId, clientSecret);

// 配置PnPContext选项
var contextOptions = new PnPContextOptions
{
    SiteUrl = new Uri(siteUrl),
    AuthenticationProvider = authProvider
};

// 初始化PnPContext并读取术语库
using (var context = await PnPContextFactory.CreateAsync(contextOptions))
{
    // 获取租户级术语库实例
    var termStore = await context.TermStore.GetAsync();
    
    // 读取所有术语组,同时加载关联的术语集
    var termGroups = await termStore.Groups.GetAsync(p => p.TermSets);
    
    foreach (var group in termGroups)
    {
        Console.WriteLine($"术语组: {group.Name}");
        foreach (var set in group.TermSets)
        {
            Console.WriteLine($"  术语集: {set.Name}");
            // 读取术语集下的所有术语
            var terms = await set.Terms.GetAsync();
            foreach (var term in terms)
            {
                Console.WriteLine($"    术语: {term.Name}");
            }
        }
    }
}

3. 关键注意事项

  • 确保使用PnP Framework 3.x及以上版本,旧版本对仅应用权限的术语库支持存在缺陷
  • 站点URL使用租户根站点即可,无需指定具体子站点,因为术语库是租户全局资源
  • 必须使用应用权限,不能用委派权限,否则不符合你仅应用权限的需求

关于传统ClientContext无法访问的原因

普通的ClientContext没有封装术语库的专用API,即使拿到了仅应用权限的上下文,也无法直接调用术语库接口。而PnP Framework的PnPContext专门扩展了术语库的操作能力,并且适配了现代认证方式,因此可以正常访问。

内容的提问来源于stack exchange,提问作者EduardoCMB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:25:32