Vk Api. vk_upload_photo не загружает фотографии в группу
Я использую ключ от группы Вк с полным доступом. Но картинки не отсылаються. Вот мой код - что я делаю не так? просьба исправить и объяснить.
function vk_upload_photo($upload_url, $image_url) {
$image = wp_remote_get($image_url);
if (is_wp_error($image)) {
return false;
}
// Создаем временный файл для изображения
$tmp_file = wp_tempnam($image_url);
if (!$tmp_file) {
return false;
}
file_put_contents($tmp_file, wp_remote_retrieve_body($image));
// Подготавливаем данные для отправки
$file_contents = file_get_contents($tmp_file);
$boundary = wp_generate_password(24);
$headers = [
'Content-Type' => 'multipart/form-data; boundary=' . $boundary,
];
$body = '--' . $boundary . "\r\n";
$body .= 'Content-Disposition: form-data; name="photo"; filename="photo.jpg"' . "\r\n";
$body .= "Content-Type: image/jpeg\r\n\r\n";
$body .= $file_contents . "\r\n";
$body .= '--' . $boundary . '--';
// Отправляем изображение на сервер загрузки ВК
$response = wp_remote_post($upload_url, [
'headers' => $headers,
'body' => $body,
'timeout' => 60,
]);
// Удаляем временный файл
unlink($tmp_file);
if (is_wp_error($response)) {
return false;
}
$response_body = wp_remote_retrieve_body($response);
$upload_result = json_decode($response_body, true);
if (!isset($upload_result['photo'])) {
return false;
}
// Сохраняем фотографию на стене группы
$params = [
'access_token' => get_option('vk_access_token'),
'v' => '5.131',
'group_id' => get_option('vk_group_id'),
'server' => $upload_result['server'],
'photo' => $upload_result['photo'],
'hash' => $upload_result['hash'],
];
$save_response = wp_remote_post('https://api.vk.com/method/photos.saveWallPhoto', [
'body' => $params,
]);
if (is_wp_error($save_response)) {
return false;
}
$save_body = wp_remote_retrieve_body($save_response);
$save_result = json_decode($save_body, true);
if (isset($save_result['response'][0])) {
return $save_result['response'][0];
}
return false;
}