2016-04-06 4 views
0

Некоторое время назад я пытался создать рабочий запрос PATCH для обновления местоположения через Google API для моего бизнеса, но мне еще предстоит сделать успешный запрос.Не удалось обновить местоположение с помощью API Google Мой бизнес

Это то, что моя последняя попытка запроса выглядит любит:

{ 
    location": { 
    "primaryPhone": "1-800-TEST" 
    }, 
    "languageCode": "en", 
    "fieldMask": "primaryPhone", 
    "validateOnly": true 
} 

Когда я что-то вроде fieldMask опускаем я получаю ошибку о том, что address.country не установлен, но с ним настоящее время я получаю следующее сообщение об ошибке :

{ 
    "error": { 
    "code": 400, 
    "message": "Request contains an invalid argument.", 
    "status": "INVALID_ARGUMENT" 
    } 
} 

Не очень информативно: P

Любые идеи, что я мог бы делать неправильно? У кого-нибудь есть рабочий образец запроса? (желательно тот, который обновляет часы работы) :)

+0

Вид тяжелой помощи, не видя ваш код, но. Попробуйте и сделайте файл location.get, который вернет тело местоположения, внеся изменения и исправьте его. Я думаю, вам нужно установить все поля, которые вы не можете выбрать и выбрать. – DaImTo

+0

Из того, что я понимаю (https://developers.google.com/my-business/reference/rest/v2/accounts.locations/patch#request -body), я должен иметь возможность отправлять только те поля, которые мне нужно обновить, если Я указываю, какие поля используют свойство 'fieldMask': ' Специальные поля для обновления. Если маска не указана, то это рассматривается как полное обновление, и все поля устанавливаются на значения, переданные в, что может включать в себя удаление пустых полей в запросе. ' 'Список полных имен полей, разделенных запятыми , Пример: «user.displayName, photo» .' – Marco

+0

Код также не очень интересен, как например, запрос 'GET' работает нормально - я почти уверен, что с телом запроса что-то не так, но я еще не смогли выяснить, что еще :) – Marco

ответ

0

Я пришел сюда, ища пример, прежде чем заставить его работать. Итак, лучше поздно, чем никогда, вот рабочий ответ.

Существует различие между полями, которые описывают, как должен обрабатываться запрос, и данными, которые поступают в местоположение. Первые идут после? в URL. Последний входит в тело.

Таким образом, вы должны выдать:

PATCH https://mybusiness.googleapis.com/v3/accounts/$accountId/locations/$locationId?languageCode=en&fieldMask=primaryPhone&validateOnly=true 

с телом:

{"primaryPhone": "1-800-TEST"} 

Если предположить, что у вас есть действующий Authorization заголовок, это должно работать.

Смежные вопросы