Автоматизируем постинг в Вконтакте: подключаем RSS

В то время как одни рассматривают Вконтакте как базу по имбецилам, другие не дремлют и пытаются выжать из нее максимальный трафик для своих сайтов. Сегодняшний пост о том, как автоматизировать публикацию анонсов со своего сайта в популярную соцсеть Вконтакте посредством RSS канала. Заранее скажу, есть платные сервисы, которые могут автоматически публиковать анонсы с RSS в Вконтакте, а встроенной в социальной сеть такой возможности нет (подключить RSS). Если вас интересует бесплатный вариант - читаем дальше.

Если у вас уже есть оживленное сообщество/группа, то можно сделать проще, написать в поддержку запрос типа: Здравствуйте. Я Вася Пупкин. Есть ли возможность подключить для группы id123456 рсс ленту: http://123456.ru/rss.php? Вскоре вам ответят, готовы подключить они rss ленту вашего сайта для группы или не готовы. Если не готовы, вам придется руками добавлять анонсы на материалы своего сайта, пользоваться услугами платных сервисов... или сделать это самому (в смысле - автоматизацию).

1. Создаем приложение Вконтакте

Инструкции для подключения RSS в документации Вконтакте нет, но после несложных разбирательств в API, приступаем к реализации такой функции. Начнем с создания нового приложения, переходим по ссылке: http://vk.com/editapp?act=create&site=1

111

Вводим название приложения и ставим галочку Тип приложения — Standalone

222

На следующем этапе нас кидает в настройки: прописываем значения для своего сайта, откуда будем брать RSS и запоминаем ID приложения (этот идентификатор нам понадобится позднее)

Сохраняем изменения в приложении, можем закрыть Вконтакте и переходить к второму этапу.

2. Авторизуем приложение Вконтакте

Прежде чем мы напишем скрипт автопостинга новостей из RSS в группы и на страницы Вконтакте, мы должны авторизовать доступ к приложению. Для этого создаем текстовый файл, скажем start.php и впихаем в него следующий код:

<?php
class Vkapi {
protected static $_client_id = //ID приложения;
protected static $_access_token = '%access_token%';
public static function invoke ($name, array $params = array())
{
$params['access_token'] = self::$_access_token;
$content = file_get_contents('https://api.vkontakte.ru/method/'.$name.'?'.http_build_query($params));
$result = json_decode($content);
return $result->response;
}
public static function auth (array $scopes)
{
header('Content-type: text/html; charset=utf-8');
echo file_get_contents('http://oauth.vkontakte.ru/authorize?'.http_build_query(array(
'client_id' => self::$_client_id,
'scope' => implode(',', $scopes),
'redirect_uri' => 'http://api.vkontakte.ru/blank.html',
'display' => 'page',
'response_type' => 'token'
)));
}
}
VkApi::auth(array('offline', 'wall'));
?>

В этом коде прописываем ID приложения, которое получили ранее, загружаем этот файл в корень сайта, откуда будем брать RSS и запускаем в браузере - http://сайт_где_рсс/start.php. Если вы все сделали правильно, вы получите запрос авторизации от Вконтакте.

333

Страница авторизации: вы должны войти под своим логином Вконтакте, логином того кабинета, в котором и регистрировали Standalone приложение

444

Дальше вас спросят, разрешаете ли вы доступ приложению? Разумеется, разрешаете!

555

И наконец, после всех нашим мучений, нас кинет на страницу с предупреждающим текстом: "Пожалуйста, не копируйте данные из адресной строки для сторонних сайтов. Таким образом Вы можете потерять доступ к Вашему аккаунту." Игнорируем данное предупреждение, ведь мы сами будем его использовать и не передавать сторонним сайтам и внимательно смотрим в строку браузера. В строке браузера будет параметр access_token=%access_token%&expires_in=0&user_id=%userid% (длинная последовательность цифр). Этот параметр понадобится нам на завершающем эпапе.

3. Используем приложение: автоматизируем публикацию анонсов из RSS в Вконтакте

Ранее мы создали приложение, получили к нему доступ со своего сайта и собственно сейчас, используя документированные возможности API Вконтакте, можем приступить к публикации анонсов из RSS в группы и на страницы социальной сети. В следующем примере я покажу, как опубликовать последнюю запись из rss на стене выбранной группы. Разумеется, вы можете использовать несколько вызовов скрипта и публиковать запись сразу на несколько стен.

Создаем файл, например rssad.php, впихаем в него код, предварительно отредактировав параметры (красным).

<?php
//получаем доступ к приложению
class Vkapi {
protected static $_client_id = 1234567; //ID приложения
protected static $_access_token = '3dc27d76da76d6b8da78d6bs78da495489dda78da79f6b00ad02b23a567d0c46ef1aas'; //параметр access_token, полученный нами на втором шаге
public static function invoke ($name, array $params = array())
{
$params['access_token'] = self::$_access_token;
$content = file_get_contents('https://api.vkontakte.ru/method/'.$name.'?'.http_build_query($params));
$result = json_decode($content);
return $result->response;
}
public static function auth (array $scopes)
{
header('Content-type: text/html; charset=utf-8');
echo file_get_contents('http://oauth.vkontakte.ru/authorize?'.http_build_query(array(
'client_id' => self::$_client_id,
'scope' => implode(',', $scopes),
'redirect_uri' => 'http://api.vkontakte.ru/blank.html',
'display' => 'page',
'response_type' => 'token'
)));
}
}
?>
<?php
//забираем последнюю запись из rss, вырезаем ссылку на пост и отправляем ее на страницу Вконтакте
$xml = simplexml_load_file('http://ваш_сайт/rss.php'); //подгружаем вашу rss
$post = $xml->channel->item[0]->link;

$wall_posts = VkApi::invoke( 'wall.get', array( 'owner_id' => '-41458103', //указывам id страницы или группы. Если это группа, то перед id ставим знак "-" (минус). 'count' => '1' )); if($post == $wall_posts[1]->media->share_url) { exit(); }  //мы проверили, есть ли последняя новость из rss уже на стене, если нет, то публикуем ее на стене else { $post = trim($post); VkApi::invoke( 'wall.post', array( 'owner_id' => '-41458103', 'from_group' => 1, 'attachments' => $post )); } echo $post; ?>

 Теперь же, если запустить этот скрипт из браузера, ссылка на новость будет опубликована на стене выбранной нами группы. Как запускать этот скрипт: через хрон, руками или программно, в момент опубликования новой новости - это уже ваша головная боль.

Впрочем, если вы ничего не поняли из вышесказанного, то последнее наставление будет для вас не актуальным. Впрочем, пробуйте. Автоматизация уменьшает степень вашего участия в трудновыполнимых операциях вашей интернет-жизни.

Оцените материал:
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (11 голоса, рейтинг: 4,18 из 5)
Загрузка...

Вячеслав - типичный интернетчикВячеслав Скоблей (ака files) - типичный интернетчик. Скитаюсь интернетом, пишу на PHP, увлекаюсь созданием веб-сайтов на Wordpress, решаю многочисленные проблемы, которые до появления интернета не существовали...

Специализируюсь на безопасности сайтов: защищаю сайты от атак и взломов, занимаюсь лечением вирусов на сайтах и профилактикой...

Наверняка у Вас есть вопросы, просьбы или пожелания. Не стесняйтесь спросить, я отвечаю всегда быстро...

4 комментарий

  1. domtv24 says:

    А нового варианта нет?

  2. Виктор says:

    Не работает

  3. ALEX says:

    к сожалению ваш вариант постинга в вк перестал работать, видимо что поменяли в соцсети, если вам нетрудно - поправьте плиз код, буду крайне признателен. Спасибо.

  4. Lalaka says:

    и сюда запостил.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *