Word Office Add-in SSO在Microsoft Teams客户端失效,请求技术指导
解决Microsoft Teams中Office加载项的SSO认证问题
核心原因
Teams客户端内的Office加载项运行在嵌入式WebView环境中,不支持Office.js的getAccessToken方法。这是因为Teams拥有独立的身份认证体系,需结合Teams自身的SSO机制适配认证流程。
具体解决方案
1. 切换到Teams SSO认证流程
放弃直接调用Office.js的SSO方法,改用Teams JS SDK提供的认证能力:
- 确保你的加载项已在Azure AD完成注册,并配置符合Teams要求的重定向URI(格式为
https://<你的加载项域名>/auth-endpoint) - 初始化Teams SDK后,调用
authenticate方法发起认证请求,示例代码:microsoftTeams.initialize(); microsoftTeams.authentication.authenticate({ url: window.location.origin + "/auth-start", width: 600, height: 535, successCallback: (result) => { // 处理返回的令牌,对接后端API console.log("获取令牌成功:", result); }, failureCallback: (reason) => { console.error("认证失败:", reason); } });
2. 调整后端认证逻辑
- 在Node.js后端适配Teams的OAuth2流程:接收Teams传递的授权码,再向Azure AD申请交换访问令牌
- 确保Azure AD应用注册中已添加
Teams作为平台,并配置好目标API的权限(如Microsoft Graph相关权限)
3. 避免触发外部浏览器弹窗
Teams客户端内的认证需使用内置弹窗,禁止调用外部浏览器:
- 检查加载项清单文件(manifest.xml),确认
WebApplicationInfo节点的Id为正确的Azure AD应用ID,Resource设置为你需要访问的资源(如https://graph.microsoft.com) - 禁止使用Office.js的
dialog.displayDialogAsync打开认证页面,统一使用Teams SDK的认证方法
4. 调试与排查要点
- 在Teams客户端中启用开发者工具:右键加载项页面→检查,查看控制台输出的错误信息
- 确认Azure AD应用的重定向URI已添加到允许列表
- 检查令牌请求的scope参数,确保包含
https://graph.microsoft.com/.default等必要权限
关键注意事项
- Teams中的Office加载项必须先初始化Teams SDK(
microsoftTeams.initialize()),才能调用其认证接口 - 不要混合使用Office.js和Teams SDK的认证方法,保持流程统一
- 确保加载项清单文件的
Permissions节点已设置为对应权限(如ReadWriteDocument)
内容的提问来源于stack exchange,提问作者amit gangurde
相关产品推荐
相关产品推荐

