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

Office 365插件共享邮箱中getCallbackTokenAsync调用失败求助

Outlook Web插件在共享收件箱调用getCallbackTokenAsync返回9018错误的解决方案

问题重现

在Office 365 Outlook Web插件中调用Office.context.mailbox.getCallbackTokenAsync时,普通收件箱可正常获取令牌,但共享收件箱返回以下错误:

OSF.DDA.Error {name: 'GenericTokenError', message: 'An internal error has occurred.', code: 9018}

核心代码片段:

Office.context.mailbox.getCallbackTokenAsync(
    { isRest: true },
    (result: any) => {
        if (result.status === "succeeded") {
            var accessToken = result.value;
            console.log(accessToken);
            this.getWebUrl()
                .then((itemId) => {
                    // 后续业务逻辑
                });
        } else {
            reject(result);
        }
    }
);

核心问题解答

1. 近期getCallbackTokenAsync更新是否影响共享收件箱行为?

Office 365 Outlook插件API的常规更新未针对共享收件箱场景做破坏性变更,但如果插件清单未遵循最新权限声明规范,可能触发兼容性问题。目前官方文档未提及该API针对共享收件箱的功能调整,优先排查权限与配置问题。

2. 访问共享邮箱是否需要特定权限或配置?

是,共享收件箱场景需满足以下要求:

  • 插件清单权限:插件必须声明至少ReadMailbox权限,推荐使用ReadWriteMailbox,需在manifest.xml的VersionOverrides节点中正确配置:
    <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
      <!-- 其他配置项 -->
      <Permissions>ReadWriteMailbox</Permissions>
    </VersionOverrides>
    
  • 共享邮箱权限:当前登录用户必须拥有共享邮箱的完全访问权限,或至少拥有发送为/代表发送权限,且已将共享邮箱添加到Outlook客户端(Web/桌面)中。
  • 身份验证方式:租户需启用现代身份验证,基本身份验证在共享邮箱场景下可能导致令牌获取失败。

解决方案与排查思路

  1. 替换为推荐API:getAccessTokenAsync
    微软已逐步弃用getCallbackTokenAsync,推荐使用getAccessTokenAsync,该API对共享邮箱的支持更稳定,权限控制更清晰。替换后的代码示例:

    Office.context.mailbox.getAccessTokenAsync({
        permissions: "Mailbox.ReadWrite"
    }, (result) => {
        if (result.status === "succeeded") {
            const accessToken = result.value;
            // 调用Graph API或Outlook REST API
        } else {
            console.error("令牌获取失败:", result.error);
        }
    });
    
  2. 验证共享邮箱权限配置
    联系租户管理员确认:

    • 用户对目标共享邮箱拥有「完全访问」权限
    • 共享邮箱未被设置为隐藏或限制访问
  3. 检查插件清单权限声明
    确保插件清单中的权限与实际需求匹配,避免权限不足。重新部署插件并清除Outlook缓存,确保配置生效。

  4. 排查API版本兼容性
    使用Office.context.mailbox.diagnostics.hostVersion获取当前Outlook版本,确保后续调用的REST API版本与令牌兼容(推荐使用v2.0版本的Outlook REST API或Microsoft Graph API)。

  5. 查看详细错误日志
    在Outlook Web版的开发者工具中查看网络请求的详细响应,或在Office 365管理中心的审核日志中查找权限拒绝记录,定位具体错误原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:10:25