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

使用Azure Graph API发邮件遇InvalidAuthenticationToken错误求助

解决Azure Graph API邮件发送的InvalidAuthenticationToken错误

核心问题定位

你遇到的InvalidAuthenticationToken(访问令牌为空)错误,核心是两个关键问题导致:

  1. redirect_uri配置错误:你把回调地址设为https://graph.microsoft.com/v1.0/oauth2PermissionGrants,这是Graph API的权限管理端点,并非你的应用接收授权码的回调地址。
  2. 授权流程未走完:仅发起授权请求不足以获取令牌,还需完成“用授权码换取访问令牌”的步骤,否则调用邮件接口时无法携带有效令牌。

具体解决步骤

1. 修正redirect_uri配置

  • 登录Azure门户,找到你的应用注册,进入身份验证页面。
  • 添加属于你自身应用的回调地址(比如本地开发用http://localhost:3000/callback,生产环境用你的应用域名地址),确保地址可访问,用于接收授权码。
  • 授权请求中的redirect_uri参数必须和这里配置的地址完全一致,不能再使用Graph API的端点。

2. 完成完整授权码流程

步骤1:获取授权码

构造正确的授权请求URL,替换为你的有效值后引导用户访问:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=你的客户端ID&response_type=code&redirect_uri=你配置的回调地址&scope=Mail.Send offline_access&response_mode=query&state=12345

用户登录并授权后,会跳转到你设置的回调地址,URL中会携带code参数(授权码)。

步骤2:用授权码换取访问令牌

向令牌端点发送POST请求,参数采用application/x-www-form-urlencoded格式:

POST https://login.microsoftonline.com/common/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id=你的客户端ID
&client_secret=你的客户端密钥(仅机密客户端需要)
&code=步骤1中获取的授权码
&redirect_uri=你配置的回调地址
&grant_type=authorization_code
&scope=Mail.Send

成功响应会包含access_token(访问令牌)、refresh_token(刷新令牌,可选)等字段。

步骤3:使用令牌调用邮件接口

调用Graph API发送邮件时,必须在请求头中携带访问令牌:

POST https://graph.microsoft.com/v1.0/me/sendMail
Authorization: Bearer 你的access_token
Content-Type: application/json

{
  "message": {
    "subject": "测试邮件",
    "body": {
      "contentType": "Text",
      "content": "这是测试内容"
    },
    "toRecipients": [
      {
        "emailAddress": {
          "address": "收件人邮箱"
        }
      }
    ]
  },
  "saveToSentItems": "true"
}

3. 额外检查项

  • 确保你的应用注册中已添加Mail.Send的委托权限,且完成授权(管理员同意或用户自主授权)。
  • 检查令牌有效期,过期后可使用refresh_token重新获取新的access_token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:52:37