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

如何通过AAD获取调用SharePoint REST API所需的Access Token?

.NET Core 调用SPO REST API 获取Access Token操作方案

1. 配置应用注册权限

你已经完成了应用注册,首先需要补充SPO的权限配置:

  • 进入Azure Portal应用注册页,找到你已登记的应用
  • 选择「API权限」→「添加权限」→「SharePoint」
  • 根据业务场景选择委托权限或者应用程序权限:
    • 委托权限:应用需要以登录用户身份调用接口时选择,按需勾选Sites.Read.All、Sites.ReadWrite.All等对应权限
    • 应用程序权限:应用作为无用户的后台守护程序调用时选择,按需勾选对应权限,配置完成后需要点击「授予管理员同意」完成权限激活

2. 安装依赖包

项目需要安装Microsoft.Identity.Client身份验证库,NuGet安装命令:
Install-Package Microsoft.Identity.Client

3. 代码获取Access Token

场景1:委托权限(有登录用户场景)

以用户名密码流为例,代码示例:

using Microsoft.Identity.Client;

// 替换为你的实际配置
var clientId = "应用注册的客户端ID";
var tenantId = "租户ID";
var username = "登录用户的UPN地址";
var password = "登录用户密码";
// SPO资源范围格式为https://<租户域名>.sharepoint.com/.default
var scopes = new[] { "https://contoso.sharepoint.com/.default" };

var publicClient = PublicClientApplicationBuilder
    .Create(clientId)
    .WithTenantId(tenantId)
    .Build();

var tokenResult = await publicClient.AcquireTokenByUsernamePassword(scopes, username, password)
    .ExecuteAsync();
string accessToken = tokenResult.AccessToken;

场景2:应用程序权限(无用户后台场景)

使用客户端凭据流获取Token,代码示例:

using Microsoft.Identity.Client;

// 替换为你的实际配置
var clientId = "应用注册的客户端ID";
var tenantId = "租户ID";
var clientSecret = "应用注册中生成的客户端密钥";
var scopes = new[] { "https://contoso.sharepoint.com/.default" };

var confidentialClient = ConfidentialClientApplicationBuilder
    .Create(clientId)
    .WithClientSecret(clientSecret)
    .WithTenantId(tenantId)
    .Build();

var tokenResult = await confidentialClient.AcquireTokenForClient(scopes)
    .ExecuteAsync();
string accessToken = tokenResult.AccessToken;

4. 调用SPO REST接口

拿到Token后在请求头携带即可调用目标接口,示例:

using var httpClient = new HttpClient();
// 携带身份凭证
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
// 配置SPO要求的返回格式头
httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json;odata=verbose"));
// 替换为你的实际查询地址
var requestUrl = "https://contoso.sharepoint.com/sites/shipment/_api/search/query?querytext='你的查询内容'";
var response = await httpClient.GetAsync(requestUrl);
var responseContent = await response.Content.ReadAsStringAsync();

提示:如果你使用的是世纪互联运营的中国区SharePoint,需要将资源域名、租户端点替换为中国区对应地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:18:02