@Jasur0090

Загрузка видео по API вк?

<?php

define('VK_ACCESS_TOKEN', 'xyz token');
define('VK_API_VERSION', 5.103);

// // //
// Скачиваем видео с внешнего сервера на свой сервер
// // //

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'techslides.com/demos/sample-videos/small.mp4');
curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);

$curl_result = curl_exec($ch);

curl_close($ch);

// Кладем видео в папку со скриптом
$fp = fopen('small.mp4', 'x');
fwrite($fp, $curl_result);
fclose($fp);

// // //
// Получаем адрес ссылки, куда загружать видео
// // //

$ch = curl_init();
$parameters = http_build_query([
'access_token' => VK_ACCESS_TOKEN, // access_token / ключ доступа
'v' => VK_API_VERSION, // версия API
'name' => 'Имя видеозаписи',
'description' => 'Исчерпывающее описание нашей первой видеозаписи.',
'group_id' => 192101047, // ID группы
'no_comments' => 0 // разрешаем комментирование
]);

curl_setopt($ch, CURLOPT_URL, 'https://api.vk.com/method/video.save?' . $parameters);
curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$curl_result = json_decode(curl_exec($ch), TRUE); // превращаем JSON-массив, который нам вернул VK, в обычный PHP-массив

curl_close($ch);

// // //
// Загружаем видео на серверы ВК
// // //

$ch = curl_init();
$parameters = [ 'video_file' => new CURLFile('small.mp4') ];

curl_setopt($ch, CURLOPT_URL, $curl_result['response']['upload_url']);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, TRUE);

$curl_result = json_decode(curl_exec($ch), TRUE);

curl_close($ch);

if (isset($curl_result['error'])) {
exit('Строка ' . __LINE__ . ': Ошибка при загрузке видео на серверы ВК: ' . $curl_result['error'] . '.');
}

echo 'Видеозапись успешно загружена.';

Пишет Успешна загружена, а в группе не появляется
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
@Jasur0090 Автор вопроса
Нашел решение проблемы. Оказывается через сервер обычный Acces_token блокируется. Нужно при получении токена в scope прописать права&offline
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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