Outlook插件对接Graph API授权:无需额外登录获取邮箱附件内容方案咨询
适配Graph API无需额外登录的实现方案
你通过Office.context.mailbox.getCallbackTokenAsync获取的令牌本身可兼容Graph API调用,无需引导用户二次登录,仅需调整3处配置和调用逻辑即可:
1. 调整令牌获取参数
Office.js 1.13及以上版本已新增Graph专属令牌获取参数,将原有调用逻辑替换为以下代码:
Office.context.mailbox.getCallbackTokenAsync({ allowConsentPrompt: true, forGraphAccess: true }, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { const graphAccessToken = asyncResult.value; // 将令牌传递至后端即可调用Graph接口 } });
若当前使用的Office.js版本低于1.13,需先升级引用的Office.js资源到官方最新生产版本,旧版本不支持
forGraphAccess参数。
2. 调整插件清单权限配置
在Office Add-in的manifest文件中更新两处配置:
- 权限级别保持和此前调用Outlook REST API时的配置一致即可,至少为
ReadWriteItem级别 - 新增
WebApplicationInfo节点,在该节点下声明你业务需要的Graph API权限,比如读取附件需要用到的Mail.Read、Mail.ReadWrite等权限
3. 调整后端接口调用规则
将原Outlook REST API的请求端点替换为Graph API对应端点即可,读取邮件附件的示例请求为:GET https://graph.microsoft.com/v1.0/me/messages/{邮件ID}/attachments/{附件ID}
请求头携带Authorization: Bearer {你获取到的Graph令牌}即可正常拉取附件内容。
特殊场景适配
如果你的服务面向世纪互联运营的国内版Office 365用户,将Graph请求端点替换为国内版对应地址即可,令牌获取逻辑无需调整。
内容的提问来源于stack exchange,提问作者koper89
相关产品推荐
相关产品推荐

