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

使用Microsoft Graph API PATCH更新应用注册App Roles时JSON请求读取失败

解决"Unable to read JSON request payload"错误的方案

问题根源

你复制的请求体包含HTML转义的双引号("),同时命令中对变量的引用方式错误,导致JSON解析失败。

修正后的命令(PowerShell环境)

  1. 先修正请求体的转义字符,将"替换为普通双引号,同时确保变量正确解析:
$graphApiUrl = "https://graph.microsoft.com/v1.0/applications/$($apiAppReg.appId)"
# 修正JSON格式,直接使用标准双引号包裹属性
$body = '{
    "appRoles": [
        {
            "description": "Applications can read",
            "displayName": "Reader",
            "id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "isEnabled": false,
            "value": "Read",
            "allowedMemberTypes": ["Application"]
        }
    ]
}'

# 使用双引号传递body变量,确保变量值被正确解析
az rest --method PATCH --url $graphApiUrl --headers "Content-Type=application/json" --body "$body"

关键修正点

  • 转义字符替换:把从Azure网站复制的"全部替换为",保证JSON格式合法。
  • 变量引用方式:PowerShell中必须用双引号包裹--body "$body",单引号会将$body当作字面字符串传递,而非变量值。
  • URL拼接优化:用PowerShell变量插值$($apiAppReg.appId)简化URL拼接,避免字符串拼接错误。

后续删除角色步骤

禁用目标角色后,再次发送PATCH请求,将appRoles数组中对应角色移除即可:

# 若没有其他需要保留的角色,直接设为空数组;否则保留其他角色的完整JSON定义
$body = '{
    "appRoles": []
}'

az rest --method PATCH --url $graphApiUrl --headers "Content-Type=application/json" --body "$body"

注意:如果应用注册还有其他需保留的App Roles,不要直接设为空数组,需在appRoles数组中保留这些角色的完整JSON对象,仅移除目标角色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:10:54