Vk api как загрузить картинку

В настоящее время наш API позволяет загружать изображения только в качестве гостя. Скоро будет доступна новая версия API, в которой будет реализовано кроме стандартной функции upload, еще и загрузка upload под определенным пользователем с паролем и функции работы с картинками и альбомами: изменение информации о картинке, создание альбома, удаление альбома, изменение альбома, перенос в другой альбом, удаление картинки. (данный функционал уже тестируется в бета режиме по запросу можем предоставить новые функции API)

API вызовы

API работает с POST и GET запросами, но предпочтительным методом является POST.

URL-адрес запроса

https://photosp.ru/api/1/(action)/ (если это не сработает, попробуйте удалить слеш ‘/’ в конце)

Параметры

key — ключ* (получить его можно по запросу здесь).

action — то что вы хотите сделать, значение по умолчанию: [values: upload].

source — источник картинки: может быть base64 кодом картинки, файлом или URL.

format — формат ответа: json (используется по умолчанию), redirect, txt.

4 API Вконтакте и Python 3: загружаем фото в альбом группы

Пример Вызова

Ответ API

Ответы будут варьироваться в зависимости от формата параметра:

json — будет отображать все изображения и подробные данные в формате json. [по умолчанию]

txt — возвращает изображение прямой URL на текст/обычный формат.

redirect — перенаправляет на URL-адрес изображения посетителя.

При использовании json ответ будет иметь заголовки коды статуса, чтобы позволить вам легко понять, запрос был корректный или нет.

status_code и status_txt

Источник: photosp.ru

Как правильно загружать картинки через VK API на PHP?

Доброго времени суток, знатаки.
Уже 3 ночи мучаюсь с этим вопросом. Думал смогу сам, не смог.
Решил скрипт загрузки написать отдельным кодом, чтобы уже точно не путаться.
Перепробовал много способов из гугла. Ничего не помогает(
есть такой код

Еще по теме:  Как восстановить переписку в ВК тик ток

‘; $url = $json[‘response’][‘upload_url’]; $lala = dirname(__FILE__).»/image.jpg»; $cfile = curl_file_create($lala,’image/jpeg’,’image1.jpg’); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_USERAGENT, «Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2» ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt($ch, CURLOPT_POSTFIELDS, array(«file1» => $cfile)); $response = curl_exec( $ch ); curl_close( $ch ); $json = json_decode($response, true); var_dump($json); echo ‘
‘; $url = ‘https://api.vk.com/method/photos.saveWallPhoto?access_token=’ . $token . ‘photo=’ . $json[ ‘photo’ ] . ‘ $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_USERAGENT, «Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2» ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); $response = curl_exec( $ch ); curl_close( $ch ); $json = json_decode($response, true); var_dump($json); echo ‘

Python API VKontakte!! Как скачать фотографии из ВК через API?


‘; ?>

в ответ получаю:

array(1) < [«response»]=>array(3) < [«upload_url»]=>string(189) «https://pu.vk.com/c626420/upload.php?act=do_addaid=-14hash=8c791b973c407226faa94e4d674e5897swfupload=1wallphoto=1» [«aid»]=> int(-14) [«mid»]=> int(63304746) > > array(3) < [«server»]=>int(626420) [«photo»]=> string(536) «[]» [«hash»]=> string(32) «062c80b517bea2666f2fd02df25ea9d0» > array(1) < [«error»]=>array(3) < [«error_code»]=>int(121) [«error_msg»]=> string(12) «Invalid hash» [«request_params»]=> array(5) < [0]=>array(2) < [«key»]=>string(5) «oauth» [«value»]=> string(1) «1» > [1]=> array(2) < [«key»]=>string(6) «method» [«value»]=> string(20) «photos.saveWallPhoto» > [2]=> array(2) < [«key»]=>string(6) «server» [«value»]=> string(6) «626420» > [3]=> array(2) < [«key»]=>string(5) «photo» [«value»]=> string(536) «[]» > [4]=> array(2) < [«key»]=>string(4) «hash» [«value»]=> string(32) «062c80b517bea2666f2fd02df25ea9d0» > > > >

как решить проблему?(

  • Вопрос задан более трёх лет назад
  • 6795 просмотров

Источник: qna.habr.com

Как по REST API WordPress загрузить изображение в медиа менеджер

Как по REST API WordPress загрузить изображение в медиа менеджер

Здравствуйте. В сегодняшней статье, мы рассмотрим загрузку изображений в media manager Вордпресс посредством API, с использованием его core функций.
Сегодня мы немного усложним себе задачу путем использования крона. Т.к. наш код должен будет выполняться по крону с периодичностью в 10 сек.
Приступим. Первым делом создадим кастомный временной диапазон через который будет срабатывать наш крон. Для этого в WP есть специальный фильтр “cron_schedules”:

Еще по теме:  Сделать короткую ссылку ВК из длинной

add_filter(‘cron_schedules’, function ($schedules) < $schedules[’10sec’] = [ ‘interval’ =>10, ‘display’ => __(‘Every 10 sec’), ]; return $schedules; >);

в нашем случае, к переменной “$schedules” мы добавим еще один массив, ключом которого будет наш интервал. В котором “interval” — длительность интервала в секунду, “display” — название интервала.

В листинге ниже:

add_action(‘wp’, function() < if(!wp_next_scheduled(‘rest_api_media’)) < wp_schedule_event( time(), ’10sec’, ‘rest_api_media’); >>);

выполняем вызов созданного чуть позже нами хука, с периодичностью в 10 сек.
WordPress функция “wp_next_scheduled(‘rest_api_media’)”, проверяет, нужно ли в это время вызывать хук переданный в аргументе или еще подождать. Если время пришло — вызываем хук через ф-ю “wp_schedule_event”, и устанавливаем временную метку.

И основной код, отвечающий за upload изображений по API в наш или сторонний сайт на WordPress:

add_action(‘rest_api_media’, function () < $username = ‘admin’; $password = ‘qweqwe’; $headers = [ ‘Authorization’ =>’Basic ‘ . base64_encode($username . ‘:’ . $password), ]; $url = мой-сайт/wp-json/wp/v2/media/’; $file = __DIR__ . ‘/data/book.jpg’; $headers[‘Content-Disposition’] = ‘attachment; filename=»‘ . basename($file) . ‘»‘; $response = wp_remote_post($url, [ ‘headers’ => $headers, ‘body’ => file_get_contents($file) ]); $records = json_decode( wp_remote_retrieve_body($response), true ); echo ‘Code: ‘ . wp_remote_retrieve_response_code($response); echo ‘
‘; echo ‘Message: ‘ . wp_remote_retrieve_response_message($response); echo ‘
‘; echo ‘Records: ‘ . count($records); echo ‘
‘; echo ‘Answer:’; echo»$records = «;print_r($records);echo»»; // die; >);

Загрузка изображений по АПИ, для меня была самой сложной частью работы с АПИ. Т.к. информации по данной теме в интернете практически не было. А та которая была, мне никак не помогла.
Рассмотрим подробнее код выше. В первых строках мы настраиваем заголовки для авторизации. Это важная часть, т.к. без этого мы не сможем ничего загрузить на наш сайт.

$url = мой-сайт/wp-json/wp/v2/media/’; $file = __DIR__ . ‘/data/book.jpg’; $headers[‘Content-Disposition’] = ‘attachment; filename=»‘ . basename($file) . ‘»‘; $response = wp_remote_post($url, [ ‘headers’ => $headers, ‘body’ => file_get_contents($file) ]);

Еще по теме:  Как искать слово на странице ВК

Указываем URL сайта для которого будет загружаться файл.

В переменной “$file”, полный путь к файлу.

И заголовок, указывающий имя загружаемого файла:

$headers[‘Content-Disposition’] = ‘attachment; filename=»‘ . basename($file) . ‘»‘;

Далее, через функцию “wp_remote_post”, мы отправляем содержимое файла, записав его в индекс массива “body”, предварительно считав содержимое файла:

$response = wp_remote_post($url, [ ‘headers’ => $headers, ‘body’ => file_get_contents($file) ]);

В ответ, АПИ сайта, отдаст нам подробную информацию о загруженном файле. Которую мы можем изучить через отладочный код ниже:

$records = json_decode( wp_remote_retrieve_body($response), true ); echo ‘Code: ‘ . wp_remote_retrieve_response_code($response); echo ‘
‘; echo ‘Message: ‘ . wp_remote_retrieve_response_message($response); echo ‘
‘; echo ‘Records: ‘ . count($records); echo ‘
‘; echo ‘Answer:’; echo»$records = «;print_r($records);echo»»;

На этом все, загрузка изображений закончена.

Источник: plance.top

Рейтинг
( Пока оценок нет )
Загрузка ...