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

Outlook插件跨租户首次登录时用户同意提示未显示全部权限

问题分析

你开发的Outlook插件需要Mail.ReadWrite等委派权限,在租户A运行正常,但在租户B测试时,用户首次授权仅获得profile、openid、offline_access权限,缺失Mail.ReadWrite和User.Read,导致调用Graph API触发AADSTS65001错误,仅手动授予管理员同意后权限才补全。核心问题是用户交互式授权流程未正确请求所有配置的权限。

解决方案

1. 确认Azure应用注册的权限类型与配置

  • 登录Azure门户,进入目标应用注册(summarizrApp),切换到API权限页面:
    • 确保Mail.ReadWrite和User.Read是委派权限(而非应用权限)——应用权限必须管理员同意,而委派权限允许用户自行授权。
    • 确认这些权限已成功添加并保存,无拼写或类型错误。

2. 检查Outlook插件manifest.xml的完整配置

  • 除了<Scopes>节点,需确保manifest中声明对应的Office权限:
    <Permissions>ReadWriteMailbox</Permissions>
    
    该节点用于告知Office平台插件的邮箱权限范围,与OAuth权限配合才能触发完整的授权请求。
  • 核对<Scopes>内的权限名称与Azure应用注册中的完全一致,无大小写或拼写错误。

3. 调整getAccessToken调用参数

  • 显式指定Graph资源URI,确保Office.js明确请求Graph权限:
    const token = await OfficeRuntime.auth.getAccessToken({
      allowConsentPrompt: true,
      allowSignInPrompt: true,
      forMSGraphAccess: true,
      resource: "https://graph.microsoft.com/"
    });
    
  • 若用户有旧授权记录,添加prompt: "consent"参数强制触发完整权限同意窗口:
    const token = await OfficeRuntime.auth.getAccessToken({
      allowConsentPrompt: true,
      allowSignInPrompt: true,
      forMSGraphAccess: true,
      prompt: "consent"
    });
    

4. 检查租户B的Azure AD用户同意策略

  • 进入租户B的Azure AD > 企业应用 > 用户设置:
    • 确认用户同意应用选项设置为「允许用户同意应用访问他们的数据」,或更宽松的策略(如允许用户同意所有非管理员权限)。若租户限制了用户同意的权限范围,Mail.ReadWrite可能被归类为需要管理员审批的权限,导致用户无法自行授权。

5. 清除授权缓存并重新测试

  • 让租户B的用户在Azure AD中撤销对summarizrApp的授权:路径为Azure AD > 用户 > 选择目标用户 > 应用权限 > 找到该应用并删除。
  • 清除浏览器缓存或使用隐私窗口重新安装并运行插件,触发全新的授权流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:17:35