Ошибка 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
}