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

使用PowerShell调用Azure AD Token API:JSON请求体传递失败求助

问题原因及解决方案

核心问题

Azure AD的/oauth2/v2.0/token接口不支持JSON格式的请求体,它遵循OAuth2规范,要求请求体必须使用application/x-www-form-urlencoded格式(即键值对用&分隔的表单编码格式)。你传JSON时,接口无法解析其中的参数,因此提示找不到grant_type。

PowerShell正确调用方式

如果要在PowerShell中测试,直接使用哈希表作为-Body参数即可,PowerShell会自动将其编码为表单格式并设置正确的Content-Type:

$requestBody = @{
    client_id     = "clieid-12345-32234"
    client_secret = "jewhfjkjlskw;fdslk;"
    grant_type    = "password"
    username      = "user@example.com"
    password      = "pwd"
    scope         = "Directory.AccessAsUser.All"
}

Invoke-RestMethod -Method Post -Uri "https://login.microsoftonline.com/$TenID/oauth2/v2.0/token" -Body $requestBody

Power Automate中正确配置HTTP端点

要在Power Automate中调用该接口,按以下步骤设置:

  • 添加「HTTP」动作,请求方法选择POST
  • 填写URI:https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token(替换{你的租户ID}为实际值)
  • 在「Headers」区域添加键值对:
    • 键:Content-Type
    • 值:application/x-www-form-urlencoded
  • 在「Body」区域使用表单编码格式填写参数,示例:
    grant_type=password&username=user@example.com&password=pwd&client_id=clieid-12345-32234&client_secret=jewhfjkjlskw;fdslk;&scope=Directory.AccessAsUser.All
    
    可以用Power Automate的动态内容替换固定值,比如从变量或其他动作中获取用户名、密码等参数。

注意:密码模式(Resource Owner Password Credentials)不推荐用于生产环境,微软建议使用更安全的授权流程(如授权码流),尤其是当涉及用户密码时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:45:32