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

为何无法获取同时兼容IMAP与Microsoft Graph的Outlook访问令牌?

解决同时请求Graph与IMAP/SMTP Scope时的invalid_scope错误

问题原因

Microsoft OAuth 2.0 v2.0端点不允许在同一个访问令牌请求中混合两类不同的scope:

  • Microsoft Graph专属scope:比如Contacts.Read、Contacts.Read.Shared这类,对应资源是https://graph.microsoft.com
  • Exchange协议专属scope:比如https://outlook.office.com/IMAP.AccessAsUser.All、https://outlook.office.com/SMTP.Send这类,对应资源是https://outlook.office.com

一个访问令牌只能绑定单一资源,混合请求不同资源的scope会直接触发invalid_scope错误,哪怕你已经完成了用户授权。

解决方案

分两次请求访问令牌,利用刷新令牌获取第二组scope的令牌:

  1. 第一次请求Graph令牌
    用已获取的授权码,请求Graph相关的scope:

    offline_access profile openid email Contacts.Read Contacts.Read.Shared
    

    请求地址依然是https://login.microsoftonline.com/common/oauth2/v2.0/token,成功后会得到:

    • 针对Graph的访问令牌(用于调用联系人API)
    • 刷新令牌(后续用来请求Exchange协议的令牌)
  2. 第二次请求Exchange协议令牌
    使用第一次得到的刷新令牌,请求Exchange相关的scope:

    https://outlook.office.com/IMAP.AccessAsUser.All https://outlook.office.com/SMTP.Send
    

    同样调用https://login.microsoftonline.com/common/oauth2/v2.0/token接口,这次会得到针对IMAP/SMTP的访问令牌,用于邮件操作。

注意:授权码只能使用一次,所以必须用第一次请求得到的刷新令牌来获取第二组令牌,而不是重复使用授权码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:42:41