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

PHP使用OAuth刷新令牌获取Office365邮箱访问令牌报错求助

Office365 OAuth刷新令牌报错AADSTS65001解决方法

问题描述

我对Azure/Office365工作流程不熟悉,目前对接Office365邮箱时遇到刷新令牌流程问题。可以通过ClientID和ClientSecret获取访问令牌(Access Token)与刷新令牌(Refresh Token),但使用刷新令牌获取新访问令牌时始终返回错误。

编写的PHP代码如下:

$CLIENT_ID="....";
$CLIENT_SECRET="...";
$TENANT="...";
$REFRESH_TOKEN="...";

$url= "https://login.microsoftonline.com/$TENANT/oauth2/v2.0/token";

$param_post_curl = [ 
 'client_id'=>$CLIENT_ID,
 'client_secret'=>$CLIENT_SECRET,
 'refresh_token'=>$REFRESH_TOKEN,
 'grant_type'=>'refresh_token' ];

$ch=curl_init();

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($param_post_curl));
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);

$oResult=curl_exec($ch);

执行后返回错误:

"error":"invalid_grant","error_description":"AADSTS65001: The user or administrator has not consented to use the application with ID '7xxx...'

解决步骤

  • 检查应用权限配置
    1. 登录Azure门户,找到对应应用注册,进入「API权限」页面。
    2. 确认已添加Office365邮箱相关权限(如Mail.Read、Mail.Send),且权限类型匹配你的业务场景(委派权限用于用户上下文,应用权限用于后台服务)。
  • 完成权限同意操作
    1. 若使用委派权限:首次获取令牌的授权流程中,用户必须完成权限同意步骤;
    2. 若使用应用权限:需要租户管理员在「API权限」页面点击「授予管理员同意」,完成租户级别的权限授权。
  • 重新获取有效刷新令牌
    1. 原刷新令牌可能因未完成同意流程而过期或无效,重新走完整的OAuth授权流程,确保用户/管理员完成权限同意后,获取新的刷新令牌再尝试请求。
  • 验证请求参数正确性
    1. 确认TENANT参数为正确的租户ID,或根据应用类型选择common/organizations;
    2. 检查grant_type是否严格为refresh_token,所有参数无拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:15:32