如何通过Microsoft Graph API获取SharePoint页面titleArea图片
问题描述
我一直在尝试查找通过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
相关产品推荐
相关产品推荐

