В данной статье речь пойдут о том как по средствам скрипта PHP скопировать (сделать репост) сообщения из группы ВК на личную страницу. Для этого мы будем использовать два метода API Вконтакте: «wall.get» и «wall.repost«.
API VK и PHP — Как сделать репост сообщений из сообщества
Получаем токен для использования API VK.
Для того, что бы мы могли работать с API Вконтакте нам необходимо получить токен, он же ключ доступа. Если он у вас уже есть, то отлично, если нет, то в данной статье я описывал его получение: API VK — Создаём Standalone-приложение и получаем token
Немного про методы API: wall.get и wall.repost.
wall.get
Этот метод необходим нам для получения списка записей из сообщества или группы ВК, так же можно использовать для получения записи со стены пользователя.
Пример использования в POST запросе:
1 |
https://api.vk.com/method/wall.get?domain=pecheneknet&count=1&filter=owner&v=5.103&access_token=b46b246cbcb29bdd00f7af666d11831ccf554d84bc1c9d1dab |
Теперь разберём, что же мы использовали в запросе:
domain — короткий адрес пользователя или сообщества. В нашем случае это будет «pecheneknet». Так же заместо параметра «domain» можно использовать «owner_id«, разница у них в том, что первый это короткий адрес пользователя или сообщества в ВК (например https://vk.com/pecheneknet), а втором это идентификатор. Использовать можно один из параметров. И то и другое можно получить из адресной строки браузера, перейдя в сообщество.
coun — количество записей, которое нам необходимо получить, в нашем случае это будет одна последняя запись в сообществе.
filter — определяет, какие типы записей на стене необходимо получить, в нашем случае «owner » — записи владельца стены.
access_token — наш токен, который мы получали ранее.
Если мы выполним этот запрос в браузере, то получим ответ от API ВК в виде JSON, с информацией о записи в сообществе.
Более подробно с методом Вы можете ознакомиться на официально странице ВКонтакте: wall.get
wall.repost
Данный метод нам необходим для репоста сообщения (копирования на стену).
Пример использования в POST запросе:
1 |
https://api.vk.com/method/wall.repost?object=wall-144191581_411&v=5.103&access_token=b46b246cbcb29bdd00f7af666d111cc9a028f554d84bc1c9d1dab |
object — идентификатор объекта, который необходимо разместить на стене, например, wall66748_3675 или wall-1_340364. Получить его можно перейдя к записи на стене сообщества, из адресной строки браузера.
В нашем случае мы будем его получать используя метод «wall.get«, что я описывал выше.
access_token — опять же наш токен, который мы получали ранее.
Более подробно с методом Вы можете ознакомиться на официально странице ВКонтакте: wall.repost
PHP скрпипт для автоматического репостинга по средствам API VK.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<form method="post" action=""> <input type="submit" name="submit" value="[Pechenek.NET]"> </form> <?php /* Проверяем нажата ли кнопка, и введена ли верная фраза*/ if(isset($_POST['submit'])){ //проверяем нажата ли кнопка $tokenVK = "cff80009cf764bc080e99e403cf604bae252e6730fdb3d5d72e2"; //Токен приложения ВК, укажите свой! $groupDomain = "pecheneknet"; //короткий адрес пользователя или сообщества //Получаем JSON с последним постом из группы/сообщества $getWallGroup = file_get_contents("https://api.vk.com/method/wall.get?domain=".$groupDomain."&count=1&filter=owner&v=5.103&access_token=".$tokenVK); $json_decode = json_decode($getWallGroup,true); //Принимаем закодированную в JSON строку и преобразует ее в переменную //print_r($json_decode); //Расскомментировать если хотим посмотреть, что возвращает API /* Разбираем JSON на нужные нам переменные */ $id = $json_decode[response][items][0][id]; //Достаём ответное значение $owner_id = $json_decode[response][items][0][owner_id]; //Достаём ответное значение $wall = "wall" .$owner_id."_".$id; // формируем номер записи для последующего использования /* Репостим сообщение на страницу пользователя */ $wallRepost = file_get_contents("https://api.vk.com/method/wall.repost?object=".$wall."&v=5.103&access_token=".$tokenVK); print_r($wallRepost); //Расскомментировать если хотим посмотреть, что возвращает API } ?> |
В самом скрипте оставил комментарии, думаю должно быть понятно.
В вкратце:
- Нажимаем кнопку,
- скрипт отправляет запрос с нужными параметрами к API ВКонтакте,
- получает в ответ JSON из которого формирует номер записи/поста,
- репостит сообщение пользователю (тому, чей токен).
Не забывайте менять значения «$tokenVK» и «$groupDomain» на свои!
Если у вас много пользователей, кому необходимо зарепостить запись из сообщества, то можно загнать скрипт в цикл, и передавать ему массивом токены из базы данных или текстового файла, возможно даже указать в самом скрипте.
Пример с использованием базы данных:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<form method="post" action=""> <input type="submit" name="submit" value="[Pechenek.NET]"> </form> <?php /* Проверяем нажата ли кнопка, и введена ли верная фраза*/ if(isset($_POST['submit'])){ //проверяем нажата ли кнопка //-----------------------Подключение к БД---------------------------------// $host = "localhost"; $user = "user "; //Ваш логин $pass = "pass "; //Ваш пароль $db_name = "DBName"; // Имя БД mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); //показываем ошибки $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой // Ругаемся, если соединение установить не удалось if (!$link) { echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error(); exit; } //Получаем токены ВК из БД $vktoken = mysqli_query($link, "SELECT `token` FROM `token` "); while ($tok = mysqli_fetch_array($vktoken)) { $token[] = $tok['token']; } $b = 0; foreach ($token as $vv) { if($b==3) { sleep(6); $b=1;} else { $b = $b+1; } $groupDomain = "pecheneknet"; //короткий адрес пользователя или сообщества //Получаем JSON с последним постом из группы/сообщества $getWallGroup = file_get_contents("https://api.vk.com/method/wall.get?domain=".$groupDomain."&count=1&filter=owner&v=5.103&access_token=".$vv); $json_decode = json_decode($getWallGroup,true); //Принимаем закодированную в JSON строку и преобразует ее в переменную //print_r($json_decode); //Расскомментировать если хотим посмотреть, что возвращает API /* Разбираем JSON на нужные нам переменные */ $id = $json_decode[response][items][0][id]; //Достаём ответное значение $owner_id = $json_decode[response][items][0][owner_id]; //Достаём ответное значение $wall = "wall" .$owner_id."_".$id; // формируем номер записи для последующего использования /* Репостим сообщение на страницу пользователя */ $wallRepost = file_get_contents("https://api.vk.com/method/wall.repost?object=".$wall."&v=5.103&access_token=".$vv); print_r($wallRepost); //Расскомментировать если хотим посмотреть, что возвращает API } unset($vv); } ?> |
Не забывайте менять данные для подключения к базе данных и используемые таблицы.
Так же, тут можете посмотреть как запустить скрипт на локальном хосте: OpenServer и CRON — Запускаем PHP скрипт локально
А тут, как на хостинге: API VK и PHP — Автопостинг сообщений в группах.
На этом пожалуй всё, надеюсь статья была вам полезной. Не забывайте пользоваться кнопками «Поделиться в соц. сетях», так же подписываться на наш Канал и группы в ВК, Twitter, Facebook.
Всем удачи и море печенек!