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

调用Microsoft Graph API Token接口:x-www-form-urlencoded转JSON遇错

Azure AD Token接口JSON请求体报错AADSTS900144的解决办法

根本原因

Azure AD的OAuth2 v2.0令牌端点(https://login.microsoftonline.com/{{AzuretenantID}}/oauth2/v2.0/token)不支持JSON格式的请求体,仅接受application/x-www-form-urlencoded编码格式。即使请求体中包含grant_type等必要参数,只要格式为JSON,端点就无法解析参数,因此返回AADSTS900144错误。

解决步骤

无论你的程序是否仅能构造JSON数据,都需要将请求参数转换为x-www-form-urlencoded格式后发送:

  • 参数格式转换:将JSON中的键值对转换为key=value拼接的字符串,注意对特殊字符(如client_secret中的~等)进行URL编码:

    grant_type=client_credentials&client_id=7721b276-c186-42e0-b81c-c8cf0bfc5f21&client_secret=Lu48Q%7E5SQ8ge6O2OXvsfYJJH-ga0DdHCNsgubaea&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
    
  • 请求头配置:必须将请求头的Content-Type设置为application/x-www-form-urlencoded,这是端点识别请求格式的核心要求。

  • 程序适配:如果你的程序只能生成JSON结构,需在发送请求前增加转换逻辑:

    1. 解析JSON对象提取键值对
    2. 将键值对序列化为x-www-form-urlencoded格式字符串
    3. 替换原请求体为该字符串,并修改Content-Type请求头

验证方法

在Postman中测试时,选择raw模式后,将格式下拉框从JSON切换为Text,粘贴转换后的x-www-form-urlencoded字符串,同时设置Content-Type头为application/x-www-form-urlencoded,即可成功获取认证令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:22:20