LaravelRUS / laravel-vk-requester

Пакет предоставляет удобный способ выполнения запросов к API Vk.Сom.
MIT License
77 stars 15 forks source link

"error_code":12,"error_msg":"Unable to compile code: '}' expected, 'photo' found in line 1" #12

Closed batFormat closed 5 years ago

batFormat commented 5 years ago
     VkRequest::create([
                    'method'     => 'photos.saveMarketPhoto',
                    'parameters' => [
                        'group_id' => 68262689,
                        'server'   => $data['server'],
                        'photo'    => $data['photo'],
                        'hash'     => $data['hash'],
                    ],
                    'token'      => $access_token,
                ]);

Ошибка при отправке запроса на сохранение фото. "error_code":12,"error_msg":"Unable to compile code: '}' expected, 'photo' found in line 1" Возможно это связанно, с этим.

Из документации к market API

Поле server содержит числовое значение, в hash, а в поле photo находится JSON-объект, структуру которого важно сохранить в исходном виде (убрав, однако, экранирование символов перед дальнейшим использованием). В PHP Вы можете использовать json_decode() для всего ответа и затем stripslashes() для объекта photo.

ghost commented 5 years ago

И что, не помогает предложенный вариант из документации?

'photo' => stripslashes($data['photo'])
batFormat commented 5 years ago

И что, не помогает предложенный вариант из документации?

'photo' => stripslashes($data['photo'])

К сожалению не помогает

ghost commented 5 years ago

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

Скорее всего необходимо просто правильно экранировать json-объект перед добавлением его в параметр этого запроса.

Если же вы уверены, что требуется исправление именно в коде пакета, то я буду рад принять pull request, исправляющий данную проблему. Или хотя бы более детальное пояснение, что именно по вашему мнению необходимо исправить в пакете.

lennarly commented 5 years ago

Нужно просто экранировать символы функцией addslashes() элемент $data['photo'].