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

如何通过Microsoft Graph API获取SharePoint页面titleArea图片

如何通过Microsoft Graph API获取SharePoint站点页面titleArea/thumbnailWebUrl中图片的公开CDN链接?

问题描述

我一直在尝试查找通过Microsoft Graph API获取SharePoint站点页面titleArea或thumbnailWebUrl中图片的相关文档,但始终没找到合适资料。这些图片存储在Site Assets或Site Contents的多级子文件夹里,没法准确自动化获取各页面对应的图片。想请教有没有人实现过获取这类图片的公开CDN链接?

我的环境信息:

  • 使用带离线访问权限的OAuth生成令牌
  • 权限范围:Sites.ReadWrite.All、Files.Read.All

已尝试的方法:

  • 遍历drives并搜索图片名称(未成功)
  • 查阅多篇技术文章,但均未找到可行方案

可行解决方案

1. 提取页面关联图片的文件ID

先调用Graph API获取目标页面的详细信息,从返回结果中提取titleArea.image.id(这是图片文件在站点驱动器中的唯一标识)。如果是thumbnailWebUrl,可从中解析出文件ID或相对路径。

示例请求:

GET /sites/{site-id}/pages/{page-id}?$select=titleArea,thumbnailWebUrl

2. 获取图片的公开CDN链接

根据拿到的文件ID,可通过两种方式获取可访问的CDN链接:

方式一:生成匿名共享链接(长期可访问)

通过创建文件的匿名查看链接,返回结果中的webUrl包含可公开访问的地址,其中SourceUrl参数值即为图片的CDN路径。

示例请求:

POST /sites/{site-id}/drives/{drive-id}/items/{file-id}/createLink
Content-Type: application/json

{
  "type": "view",
  "scope": "anonymous"
}

方式二:获取临时CDN下载链接(短期有效)

直接请求文件的@microsoft.graph.downloadUrl,这个链接是微软CDN提供的临时访问地址,有效期约1小时,适合自动化场景临时使用。

示例请求:

GET /sites/{site-id}/drives/{drive-id}/items/{file-id}?$select=@microsoft.graph.downloadUrl

3. 批量处理优化

如果需要批量获取多个页面的图片,可先批量拉取站点所有页面的titleArea.image.id,再批量查询对应文件的CDN链接,减少重复请求。

注意事项

  • 若需长期有效的CDN链接,需确保站点已启用SharePoint Online CDN
  • Sites.ReadWrite.All权限足够创建匿名共享链接,Files.Read.All权限足够获取临时下载链接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:49:55