Постинг в группу в контакте средствами php

План действий таков:

  1. Создание Standalone-приложения во вконтакте и его настройка
  2. Открытие диалога авторизации OAuth и разрешение прав доступа приложению
  3. Получение code
  4. Получение access_token
  5. Вызов api функции постинга в группу (или на стену)


Теперь по порядку:

1.  Создание Standalone-приложения во вконтакте и его настройка

1.1. Переходим по ссылке – http://vk.com/developers.php и выбираем “Создать приложение”

1.2. В следующем окне вводим любое название приложение и выбираем тип “Standalone-приложение”

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

1.4. Переходим на закладку “Настройки”. Здесь заполняем поля “Адрес сайта” и “Базовый домен” на те откуда будем постить.

Здесь же обращаем внимание на поля “ID приложения” и “Защищенный ключ” они понадобятся далее.

vkontakte_application_settings

2. Открытие диалога авторизации OAuth и разрешение прав доступа приложению

2.1. В браузере открываем следующий url

https://oauth.vk.com/authorize?
 client_id=xxxxxxx&
 scope=offline,wall,groups&
 redirect_uri=http://api.vkontakte.ru/blank.html&
 response_type=code

где client_id значение “ID приложения” из пункта 1.4, scope - перечисляет права доступа.

2.2. Откроется окно разрешение прав доступа приложению (авторизация). Необходимо нажать “Разрешить”.

3. Получение code

3.1. После успешной авторизации Вас должно перенаправить на url: http://api.vkontakte.ru/blank.html#code=xxxxxxxxxxxxxxxx . Запоминаем значение параметра code он понадобится ниже.

4. Получение access_token

4.1. Подставляя значение параметра code из предыдущего шага, client_id и client_secret из пункта 1.4., переходим по сформированной ссылке.
https://oauth.vk.com/access_token?
client_id=xxxxxxx&
client_secret=xxxxxxxxxxxxxxxxx&
code=xxxxxxxxxxxx&
redirect_uri=http://api.vkontakte.ru/blank.html&

4.2. Видим ответ от сервера и в нем access_token:{“access_token”:”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”,”expires_in”:0,”user_id”:xxxxxxxx}

5. Вызов api функции постинга в группу (или на стену)

5.1. Постим в группу:

https://api.vkontakte.ru/method/wall.post?owner_id=-xxxxxxxx&=&access_token=xxxxxxxxxxxxxxxxxxxxxx&message=TestMessage&attachment=domain.com

owner_id – id группы (в урл. необходимо чтобы впереди был минус),

access_token – из пункта 4.2.,

message - текст сообщения,

attachment – здесь можем указать ссылку на Ваш сайт.

5.2. Пример функции постинга:

function postToPage($text,$link="")
{
$access_token = "xxxxxxxxxxxxxxxxxxxxxx";
 
$group_id = "-xxxxxxxx";
 
$text = urlencode($text);
$link = urlencode($link);
 
$sRequest = "https://api.vkontakte.ru/method/wall.post?owner_id=".$group_id."&access_token=".$access_token."&message=".$text."&attachment=".$link;
 
//var_dump($sRequest);
 
// ответ от Вконтакте
$oResponce = json_decode(file_get_contents($sRequest));
 
//var_dump($oResponce);
}

Комментарии:

  1. Александр

    Целый день провозился, но не как не мог запостить запись в группу через API. Попробовал ваш метод и всё заработало, а самое главное понял где у меня косяк был. Спасибо!

  2. Александр

    GET запрос работает как нужно, но им можно передать только короткий текст. Пытаюсь отправить POST – получаю ошибку №17 “Validation required: please open redirect_uri in browser”. Может у вас есть какие то наработки, по этому вопросу?)

  3. Тимур

    Норм все получилось!!, слушайте ребят! а можно сделать все это записав на прогу, написать программу и через нее постить уже, так веть удобнее.. кто знает как или есть мысли, напишите сюда пожалуйста!) http://vk.com/ihanc

  4. evil

    Как задать задержку между постами? Есть тот, кто знает? Приведите пример, плиз!

  5. Александр

    RE: Как задать задержку между постами? Есть тот, кто знает? Приведите пример, плиз!

    Крон или setInterval + ajax

динамический ip адрес