Ошибка 400 "Недопустимая полезная нагрузка JSON" при вставке назначения лицензии G Suite с помощью Google Enterprise License Manager API

Я уже много лет использую API Google Enterprise License Manager в скрипте Google Apps, чтобы успешно назначать пользователям лицензии G Suite. С прошлой пятницы, 24.04.20, я получаюInvalid JSON payload ошибка обратно из API.

Я создаю этот объект, чтобы вставить назначение лицензии:

{
  "userId": "user@domain.com",
  "productId": "Google-Apps",
  "skuId": "Google-Apps-Unlimited"
}

я использую UrlFetchApp для вызова API из Google Apps Script:

{
  "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 Business, моя учетная запись - это учетная запись суперадминистратора, и я включил Enterprise License Manager API в консоли GCP.

  • Я использую правильный URL-адрес конечной точки API и параметры пути, определенные здесь: LicenseAssignments: insert

  • userId, productId а также skuId включены в полезную нагрузку JSON

  • Я использую правильный productId а также skuIdдля нашего домена, как определено здесь: Google Product и SKU ID

  • Пользователь существует в нашем домене G Suite

  • Это влияет на нескольких пользователей, с которыми я тестировал, как пользователей с текущими назначениями лицензий, так и без них.

В соответствии с рекомендациями для разработчиков Google я задал этот вопрос здесь и отправил проблему в Google Apps Script IssueTracker.

1 ответ

Решение

Согласно документации, полезная нагрузка должна содержать толькоuserId. productId а также skuId являются просто параметрами пути, и включения его в URL-адрес должно быть достаточно.

Тело запроса:

{
  "userId": string
}
Другие вопросы по тегам