Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误400“;无效的JSON有效负载“;使用Google Enterprise License Manager API插入G套件许可证分配时_Json_Google Apps Script_Google License Manager_Google Workspace - Fatal编程技术网

错误400“;无效的JSON有效负载“;使用Google Enterprise License Manager API插入G套件许可证分配时

错误400“;无效的JSON有效负载“;使用Google Enterprise License Manager API插入G套件许可证分配时,json,google-apps-script,google-license-manager,google-workspace,Json,Google Apps Script,Google License Manager,Google Workspace,多年来,我一直在使用in-GoogleApps脚本成功地为用户分配G套件许可证。自上周五4/24/20以来,我一直从API收到一个无效的JSON负载错误 我创建此对象以插入许可证分配: { "userId": "user@domain.com", "productId": "Google-Apps", "skuId": "Google-Apps-Unlimited" } 我使用UrlFetchApp从Google应用程序脚本调用API: { "url": "https://ww

多年来,我一直在使用in-GoogleApps脚本成功地为用户分配G套件许可证。自上周五4/24/20以来,我一直从API收到一个
无效的JSON负载
错误

我创建此对象以插入许可证分配:

{
  "userId": "user@domain.com",
  "productId": "Google-Apps",
  "skuId": "Google-Apps-Unlimited"
}
我使用
UrlFetchApp
从Google应用程序脚本调用API:

{
  "url": "https://www.googleapis.com/apps/licensing/v1/product/Google-Apps/sku/Google-Apps-Unlimited/user",
  "validateHttpsCertificates": true,
  "followRedirects": true,
  "payload": "{\"userId\":\"user@domain.com\",\"productId\":\"Google-Apps\",\"skuId\":\"Google-Apps-Unlimited\"}",
  "useIntranet": false,
  "headers": {
    "Authorization": "Bearer ya29.xxxx",
    "X-Forwarded-For": "x.x.x.x"
  },
  "method": "post",
  "contentType": "application/json"
}
正常情况下,这是可行的,但现在我得到了回复:

{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"productId\" at 'body': Cannot find field.\nInvalid JSON payload received. Unknown name \"skuId\" at 'body': Cannot find field.",
    "errors": [
      {
        "message": "Invalid JSON payload received. Unknown name \"productId\" at 'body': Cannot find field.\nInvalid JSON payload received. Unknown name \"skuId\" at 'body': Cannot find field.",
        "reason": "invalid"
      }
    ],
    "status": "INVALID_ARGUMENT"
  }
}
我已证实:

  • 我们的域拥有G Suite业务许可证,我的帐户是超级管理员帐户,并且我已在GCP控制台中启用Enterprise License Manager API

  • 我正在使用此处定义的正确API端点URL和路径参数:

  • JSON负载中包括
    userId
    productId
    skuId

  • 我正在为我们的域使用正确的
    productId
    skuId
    ,定义如下:

  • 用户存在于我们的G套件域中

  • 这会影响我测试过的多个用户,包括有和没有当前许可证分配的用户

根据谷歌的开发者指南,我在这里问了这个问题,并在谷歌应用程序脚本IssueTracker中提交了一个问题。

根据,有效负载应该只包含
用户ID
productId
skuId
只是路径参数,将其包含在url中就足够了

请求机构:

{
  "userId": string
}

实际上,从有效负载中删除
productId
skuId
是可行的。我猜它一直被设计为只需要
userId
在主体中,但它以前允许其他两个属性存在,但放弃了它们,但现在它们“修复”了这一点。顺便说一句,所有细节、链接和研究都是一个很好的问题。