@mdamem

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

Не выходит прикрепить изображение к посту в группе.
По порядку:
определяю путь к пикче, передаем в метод 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 как-то неверно формируется, потому что не вижу, где еще может быть ошибка. Если кто работал с подобным, подскажите, второй день не могу понять, как исправить.
  • Вопрос задан
  • 1001 просмотр
Пригласить эксперта
Ответы на вопрос 1
@mdamem Автор вопроса
Ответ:
group_id тоже нужно вытаскивать из ответа saveWallPhoto. Точнее, это вообще не group_id, а owner_id, и он будет отличаться от вашего group_id

Теперь все работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы