Выдаёт ошибку при добавлении фото на стену группы вк
string(329) "{"error":{"error_code":100,"error_msg":"One of the parameters specified was missing or invalid: invalid message param","request_params":[{"key":"owner_id","value":"193537571"},{"key":"attachments","value":"photo-193537571_457241871"},{"key":"v","value":"5.131"},{"key":"method","value":"wall.post"},{"key":"oauth","value":"1"}]}}"
GPT не смог помочь 3 дня уже мучаюсь, кто может помочь?
$accessToken = '';
// Идентификаторы групп
$sourceGroupId = '47249455'; // Идентификатор группы, из которой скачиваем фотографии
$targetGroupId = '193537571'; // Идентификатор группы, в которую публикуем фотографии
try {
// Получаем последний пост из исходной группы
$apiUrl = "https://api.vk.com/method/wall.get?owner_id=-$sourceGroupId&count=1&filter=owner&access_token=$accessToken&v=5.131";
$response = file_get_contents($apiUrl);
$postData = json_decode($response, true);
if (isset($postData['response']['items'][0]['attachments'][0]['photo']['sizes'])) {
// Выбираем наибольший размер фотографии
$photoSizes = $postData['response']['items'][0]['attachments'][0]['photo']['sizes'];
$largestPhoto = end($photoSizes);
// URL фотографии
$photoUrl = $largestPhoto['url'];
// Генерируем уникальное имя файла для сохранения на сервере
$uniqueFileName = uniqid() . '.jpg'; // Пример генерации имени
// Сохраняем фотографию на сервере
$folderPath = 'post';
// Создаем папку, если она не существует
if (!is_dir($folderPath)) {
mkdir($folderPath, 0755, true);
}
// Сохраняем фотографию в созданной папке
$photoPath = $folderPath . '/' . $uniqueFileName;
file_put_contents($photoPath, file_get_contents($photoUrl));
// Получаем URL для загрузки фотографии на стену целевой группы
$uploadApiUrl = "https://api.vk.com/method/photos.getWallUploadServer?group_id=$targetGroupId&access_token=$accessToken&v=5.131";
$uploadResponse = file_get_contents($uploadApiUrl);
$uploadData = json_decode($uploadResponse, true);
if (isset($uploadData['response']['upload_url'])) {
$uploadUrl = $uploadData['response']['upload_url'];
// Отправляем фотографию на сервер ВКонтакте
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uploadUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['photo' => new CURLFile($photoPath)]);
$uploadResult = curl_exec($ch);
curl_close($ch);
$uploadResult = json_decode($uploadResult, true);
// Публикуем фотографию на стене целевой группы
if (isset($uploadResult['server'], $uploadResult['photo'], $uploadResult['hash'])) {
$saveApiUrl = "https://api.vk.com/method/photos.saveWallPhoto?group_id=$targetGroupId&server={$uploadResult['server']}&photo={$uploadResult['photo']}&hash={$uploadResult['hash']}&access_token=$accessToken&v=5.131";
$saveResponse = file_get_contents($saveApiUrl);
$saveData = json_decode($saveResponse, true);
if (isset($saveData['response'][0]['id'])) {
$photoId = $saveData['response'][0]['id'];
$attachments = "photo$targetGroupId-$photoId";
$attachments = urlencode($attachments);
$ownerId = "$targetGroupId"; // Добавляем минус для идентификатора группы
$attachments = "photo$targetGroupId-$photoId";
// echo "<pre>";
// var_dump($targetGroupId);
// echo "<pre>";
// var_dump($photoId);
$i = "photo-".$targetGroupId."_".$photoId;
$postApiUrl = "https://api.vk.com/method/wall.post?owner_id=$ownerId&attachments=$i&access_token=$accessToken&v=5.131";
$postResponse = file_get_contents($postApiUrl);
echo "<pre>";
var_dump($postResponse);
echo 'Фотография успешно опубликована на стене целевой группы.';
}
}
}
} else {
echo 'В исходной группе нет фотографий для публикации.';
}
} catch (Exception $e) {
echo 'Произошла ошибка: ' . $e->getMessage();
}