无法获取SharePoint子站点Site ID:调用Microsoft Graph API报错求助
问题描述
尝试向SharePoint子站点文档库上传文件时,获取子站点Site ID/文档库Drive ID遇到障碍。通过SharePoint REST API获取到Web ID后,调用Microsoft Graph API的GET https://graph.microsoft.com/v1.0/sites/webid请求返回如下错误:
{ "error": { "code": "itemNotFound", "message": "Item not found", "innerError": { "date": "2024-05-22T13:43:03", "request-id": "1771c172-052d-4d54-9087-66c891ebb869", "client-request-id": "1771c172-052d-4d54-9087-66c891ebb869" } } }
错误原因
Graph API的sites端点不支持直接传入单独的Web ID。Graph中站点的标识符格式为{租户ID},{站点集ID},{子站点ID},或使用{租户域名}:/{站点路径}的路径式标识,单独的Web ID无法被识别。
解决步骤
1. 获取正确的子站点Site ID
方法一:通过Graph API路径式查询
直接通过子站点的域名和路径调用API:
GET https://graph.microsoft.com/v1.0/sites/{租户域名}:/sites/{子站点相对路径}
示例:若子站点路径为https://contoso.sharepoint.com/sites/root-site/sub-site,则请求为:
GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/root-site/sub-site
返回结果中的id字段即为子站点的完整Site ID。
方法二:组合SharePoint REST API获取的ID
- 访问子站点的REST API获取站点集ID:
/_api/site/id,得到站点集ID - 访问子站点的REST API获取Web ID:
/_api/web/id,得到子站点ID - 获取租户ID(可通过Azure门户或Graph API的
GET https://graph.microsoft.com/v1.0/organization获取) - 组合为完整Site ID:
{租户ID},{站点集ID},{子站点ID}
2. 获取文档库Drive ID
拿到正确的子站点Site ID后,调用以下API获取该站点下所有文档库的Drive信息:
GET https://graph.microsoft.com/v1.0/sites/{子站点Site ID}/drives
在返回结果中找到目标文档库对应的id字段,即为Drive ID。
3. 验证调用
使用正确的Site ID调用GET https://graph.microsoft.com/v1.0/sites/{子站点Site ID},若返回子站点的详细信息,则说明Site ID有效,可继续后续的文件上传操作。
内容的提问来源于stack exchange,提问作者Ashish Vats
相关产品推荐
相关产品推荐

