@xakmika1

Ошибка 100 attachments?

Выдаёт ошибку при добавлении фото на стену группы вк
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();
}
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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