Я пытаюсь создать контакт из своего приложения, а документация ужасна!
я создаю контактный объект из данных, которые я получаю по форме
var contact = {
names: [
{
displayName: body.name
}
],
phoneNumbers: [
{
value: body.phone
}
],
biographies: [
{
value: body.notes
}
],
userDefined: [
{
value: body.snif
},
{
value: body.position
},
{
value: body.sms
},
{
value: body.whatsapp
}
]
};
и пытаюсь сделать запрос, но я не могу понять, что не так
const service = google.people({version: 'v1', auth});
service.people.createContact({
parent: 'people/me',
resource: contact
}, {}, function(err, res) {
console.info(err)
});
и я получаю 400 INVALID_ARGUMENTS
errors:
[ { message: 'Request contains an invalid argument.',
domain: 'global',
reason: 'badRequest' } ] };
Nodejs, ExpressJs
пожалуйста, что я делаю не так?





Как насчет этой модификации?
userDefined добавьте свойство key.
Измените userDefined следующим образом. Это образцы ключей. Поэтому, пожалуйста, измените их для своей ситуации.
userDefined: [
{
value: body.snif,
key: "snif", // Added
},
{
value: body.position,
key: "position", // Added
},
{
value: body.sms,
key: "sms", // Added
},
{
value: body.whatsapp,
key: "whatsapp", // Added
},
],
Также, если вы хотите получить ответ от API, как насчет изменения следующим образом?
service.people.createContact({
parent: 'people/me',
resource: contact,
}, {}, function(err, res) {
if (err) {
console.info(err.errors);
return;
}
console.info(res.data);
});
Если я неправильно понял ваш вопрос, сообщите мне. Я бы хотел его изменить.
Оказывается, ваш ответ был частично правильным. Если не указывать значения ключей для userDefined, возникает INVALID_ARGUMENT. Другая проблема, с которой я столкнулся, - это указать displayName в именах, которые являются полем read_only. любой другой должен быть в порядке. Как только я дал имя как «givenName» вместо «displayName», я получил желаемый код 200.
@FedeSc Спасибо за ответ. Я рад, что ваша проблема решена. И тебе спасибо.
Спасибо за ваш комментарий. добавление ключей в userDefined ничего не дало. Более того, удаление всех полей и оставление только имен вызывает ту же ошибку. также функция, которая выполняет запрос api, не требует никаких параметров. так что все должно быть в порядке (если только оно не недействительно). до сих пор не понимаю, что я делаю не так. спасибо за ответ