使用Node.js、Graph及SSO的Office加载项如何调用SharePoint接口
模板代码中Graph调用的核心逻辑位置
你之前完成的SSO快速启动模板,已经把Graph调用的全流程做了固定封装,核心逻辑分布在三处:
- 服务端路由层:所有对Graph API的请求都不会从前端任务窗格直接发出,统一由后端的
/api/GraphData路由接口处理 - 环境变量生效逻辑:模板后端会自动读取
.env中的GRAPH_URL_SEGMENT、SCOPE配置,前者用来拼接完整的Graph请求路径,后者用来申请对应权限的访问令牌,不需要手动写配置读取代码 - 触发链路:用户在任务窗格点击交互按钮后,前端会先通过Office.js的
getAccessTokenAsync拿到SSO临时身份票据,将票据随请求发送给后端接口;后端收到票据后向Azure AD申请Graph访问令牌,再按照环境变量配置的路径发起实际请求,整个流程和你之前获取用户信息、拉取OneDrive数据的逻辑完全一致
迁移SharePoint列表接口的具体调整项
不需要从零重写调用逻辑,只需要针对现有封装做三类适配:
配置层调整
- 将
.env文件中的GRAPH_URL_SEGMENT值,替换为你在Graph Explorer中验证通过的SharePoint接口完整路径,例如拉取指定站点列表数据时可配置为sites/{站点ID}/lists/{列表ID}/items,路径需要和你在Graph Explorer跑通的地址完全匹配 - 将
.env中的SCOPE值替换为SharePoint接口对应的权限范围,例如Sites.Read.All,该值需要和你在Azure应用注册中配置的公开授权权限完全一致
代码层调整
- 检查后端的令牌申请逻辑:模板默认使用
.default权限集合申请令牌,需要确认申请令牌时传入的scope参数和你.env中配置的SCOPE值对齐,避免出现仍在申请User.Read基础权限的情况 - 匹配Graph API版本:如果你在Graph Explorer中使用的是Beta版本接口,需要把后端请求的Graph根地址中的版本段从
v1.0对应修改为beta,否则会出现404路径不存在的报错 - 适配查询参数:如果SharePoint接口需要携带
$select、$filter等查询参数,直接拼接到GRAPH_URL_SEGMENT值的末尾即可,后端封装逻辑会原样透传路径段,不会对参数做截断
前置校验项
- 确认Azure AD中为加载项注册的应用,已经申请了对应SharePoint的API权限并完成管理员授权,否则代码逻辑完全正确的情况下也会出现403权限不足的报错
- 不要直接照搬Graph Explorer的令牌逻辑:Graph Explorer使用的是用户个人授权令牌,而加载项走的是SSO的应用委托授权流程,两者的权限上下文并不通用
内容的提问来源于stack exchange,提问作者Liam Dick
相关产品推荐
相关产品推荐

