Прикрепить изображение к посту, VK API

174
03 октября 2018, 12:10

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

$photo_path = dirname(__FILE__).'/photo1.jpg';
$postData = array("file1" => '@'.$photo_path);
$getWallUploadServer = "https://api.vk.com/method/photos.getWallUploadServer?group_id=$group_id_for_method&access_token=$token&v=5.80"; 

Берем upload_url, передаем пикчу и вытаскиваем значения server, photo, hash

$response = file_get_contents($getWallUploadServer);
$response = json_decode($response)->response->upload_url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $response);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$result = json_decode(curl_exec($ch));
$server = $result->server;
$photo = $result->photo;
$hash = $result->hash;

Дальше передаем server, hash и photo в метод saveWallPhoto и вытаскиваем оттуда id фотографии:

$saveWallPhoto = file_get_contents("https://api.vk.com/method/photos.saveWallPhoto?access_token=$token&v=5.37&group_id=$group_id_for_method&server=$server&photo=$photo&hash=$hash");
$attachment = json_decode($saveWallPhoto)->response[0]->id;

Ну и в финале формирую изображение по его id и передаю в метод wallPost

header("Location: https://api.vk.com/method/wall.post?owner_id=$group_id&from_group=1&access_token=$token&attachments=photo{$group_id}_{$attachment}&v=5.37");

И вижу ошибку "One of the parameters specified was missing or invalid: invalid message param" При этом, если открыть какое-то изображение и взять его параметры photo, к примеру photo-24149106_456241216 и вручную вставить в свою финальную ссылку, это изображение отлично постится в группу. Видимо, мое id как-то неверно формируется, потому что не вижу, где еще может быть ошибка. Если кто работал с подобным, подскажите, второй день не могу понять, как исправить.

Answer 1

andreymal подсказал верно:

group_id тоже нужно вытаскивать из ответа saveWallPhoto. Точнее, это вообще не group_id, а owner_id, и он будет отличаться от вашего group_id

READ ALSO
google ReCaptcha во время парсинга данных

google ReCaptcha во время парсинга данных

Делаю инструмент для удобства работы с неким сторонним сайтом, на одном из этапов столкнулся с проблемой, при авторизации через CURL, на стороннем...

170
Как написать свой планировщик задач?

Как написать свой планировщик задач?

У меня есть скрипт, мне нужно чтоб он срабатывал два раза в деньКак на php написать, чтоб этот скрипт так работал?

151
Парсить div с изображениями

Парсить div с изображениями

Подскажите, нужно спарить div в котором находятся изображения(т

147
PHP. Работа с массивами

PHP. Работа с массивами

Всем приветЕсть вопрос

182