- PVSM.RU - https://www.pvsm.ru -

Постинг в группу картинки с текстом с помощью Вконтакте API

Задача запостить текст с картинкой в группу Вконтакте скриптом на PHP простая, тем более API Вконтакте считается понятным и надёжным. Тем не менее, мне не удалось отыскать в Интернете чёткого пошагового руководства для начинающих, которые содержало бы готовые ответы на все мелкие вопросы, возникающие на пути.
image

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

Создаём приложение

Прежде всего, нужно создать [1] Standalone-приложение. У вас должен быть для этого аккаунт ВК с привязанным номером телефона. На моей практике, если аккаунт не имеет привязанного номера телефона, то контакт начинает очень быстро отвечать в API ошибками с просьбой ввести капчу)) то есть нужно будет ещё и капча-оператора посадить рядом со скриптом.

Гененерируем access token

Далее нам нужен access token для авторизации в API. Для его генерации необходимо перейти по специальной ссылке

https://oauth.vk.com/authorize?client_id=12343547&scope=groups,wall,offline,photos&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.21&response_type=token [2], где параметром client_id передать идентификатор созданного ранее приложения. Параметр scope озачает набор прав, которым вы награждаете приложение. Подробнее о правах в документации [3]. После перехода по ссылке нужно подтвердить передачу прав приложению и скопировать access token прямо из урла, несмотря на предупреждение контакта Пожалуйста, не копируйте данные из адресной строки для сторонних сайтов. Таким образом Вы можете потерять доступ к Вашему аккаунту. Сгенерированного таким образом токена будет достаточно для работы с группой на неограниченное время.

Пишем немного кода

Решая эту задачу, я пытался найти готовую библиотеку, нашёл вот эту [4], и в итоге получился форк [5], который и используется в примере ниже. Для экспертов по качеству кода: эта библиотека предназначена исключительно для демонстрационных целей, в ней нет обширного функционала, тестов, хорошей документации, оптимизации производительности, кросс-платформенности (нужен php 5.4) и прочего — всё это оставлено неутомимому читателю для реализации.
Итак, постим текст с картинкой и тегами в сообщество Вконтакте:

// git clone https://github.com/Vastly/vkontakte-php-sdk
require_once('../src/Vkontakte.php');

$accessToken = 'your access token';
$vkAPI = new BWVkontakte(['access_token' => $accessToken]);
$publicID = 70941690;

if ($vkAPI->postToPublic($publicID, "Привет!", '/tmp/habr.png', ['вконтакте api', 'автопостинг', 'первые шаги'])) {

    echo "Ура! Всё работает, пост добавленn";

} else {

    echo "Фейл, пост не добавлен(( ищите ошибкуn";
}

Результат выполнения [6] этого кода с моим токеном. Если посмотреть код, то взаимодействие с API вконтакте происходит строго по документации [7]. Спасибо за внимание!

Автор: catanfa

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/63098

Ссылки в тексте:

[1] создать: https://vk.com/editapp?act=create

[2] https://oauth.vk.com/authorize?client_id=12343547&scope=groups,wall,offline,photos&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.21&response_type=token: https://oauth.vk.com/authorize?client_id=12343547&scope=groups,wall,offline,photos&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.21&response_type=token

[3] документации: http://vk.com/dev/permissions

[4] эту: https://github.com/bocharsky-bw/vkontakte-php-sdk

[5] форк: https://github.com/Vastly/vkontakte-php-sdk

[6] Результат выполнения: http://vk.com/hurmmma?w=wall-70941690_101

[7] документации: http://vk.com/dev/upload_files

[8] Источник: http://habrahabr.ru/post/226585/