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

已登录用户请求Azure Access Token时出现400 Bad Request错误

问题诊断与修复方案

核心问题分析

你遇到的400错误和超时,主要是以下几个参数不规范导致的:

  • Scope不匹配:授权请求(STEP1)用的是https://graph.microsoft.com/User.Read,但token请求里却用了https://graph.microsoft.com/OpenID,OAuth2要求token请求的scope必须和授权时的scope完全一致(或为其子集,不能超出授权范围),不一致会直接触发400错误。
  • Redirect URI语法错误:代码里的"https://"<MY_REDIRECT_URI>是PHP语法错误,字符串拼接必须用.,否则会导致redirect_uri参数缺失或格式混乱。
  • 固定Content-Length:硬编码Content-Length:1025完全不合理,POST请求体的长度是动态的,固定长度会让服务器判定请求体不完整,直接返回格式错误。
  • 冗余POST设置:同时设置CURLOPT_POST => 1和CURLOPT_CUSTOMREQUEST => "POST"属于冗余操作,可能引发潜在冲突。

修正后的PHP cURL代码

$curl = curl_init();
// 保持scope与授权请求完全一致
$scope = "https://graph.microsoft.com/User.Read";
// 修正redirect_uri的拼接语法
$redirectUri = "https://" . MY_REDIRECT_URI;

$params = array(
    CURLOPT_URL => "https://login.microsoftonline.com/" . AZURE_TENANT_ID . "/oauth2/v2.0/token",
    CURLOPT_POST => 1,
    // 用http_build_query自动处理参数编码,避免手动拼接的乱码问题
    CURLOPT_POSTFIELDS => http_build_query([
        "code" => $_GET['code'],
        "grant_type" => "authorization_code",
        "scope" => $scope,
        "client_id" => AZURE_CLIENT_ID,
        "client_secret" => AZURE_CLIENT_SECRET,
        "redirect_uri" => $redirectUri
    ]),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_MAXREDIRS => 4,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'],
    CURLOPT_HTTPHEADER => array(
        "cache-control: no-cache",
        "Content-Type: application/x-www-form-urlencoded"
        // 移除固定Content-Length,cURL会自动计算并设置正确值
    ),
);

curl_setopt_array($curl, $params);
$response = curl_exec($curl);

// 添加错误捕获,便于排查超时或请求失败原因
if(curl_errno($curl)){
    echo "CURL Error: " . curl_error($curl);
}
curl_close($curl);

// 打印响应,方便调试时查看具体错误信息
var_dump($response);

额外调试建议

  • 每次请求token前,打印$_GET['code']和拼接后的POST参数,确认参数无乱码或缺失。
  • 确保AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET等常量已正确定义,无拼写错误。
  • 若仍出现超时,可尝试调整CURLOPT_TIMEOUT的值,或检查服务器到Microsoft登录服务器的网络连通性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:52:35