многорукий шива
0,0
рейтинг
23 июня 2014 в 20:01

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

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



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

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


Прежде всего, нужно создать 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, где параметром client_id передать идентификатор созданного ранее приложения. Параметр scope озачает набор прав, которым вы награждаете приложение. Подробнее о правах в документации. После перехода по ссылке нужно подтвердить передачу прав приложению и скопировать access token прямо из урла, несмотря на предупреждение контакта Пожалуйста, не копируйте данные из адресной строки для сторонних сайтов. Таким образом Вы можете потерять доступ к Вашему аккаунту. Сгенерированного таким образом токена будет достаточно для работы с группой на неограниченное время.

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


Решая эту задачу, я пытался найти готовую библиотеку, нашёл вот эту, и в итоге получился форк, который и используется в примере ниже. Для экспертов по качеству кода: эта библиотека предназначена исключительно для демонстрационных целей, в ней нет обширного функционала, тестов, хорошей документации, оптимизации производительности, кросс-платформенности (нужен php 5.4) и прочего — всё это оставлено неутомимому читателю для реализации.
Итак, постим текст с картинкой и тегами в сообщество Вконтакте:
// git clone https://github.com/Vastly/vkontakte-php-sdk
require_once('../src/Vkontakte.php');

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

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

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

} else {

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


Результат выполнения этого кода с моим токеном. Если посмотреть код, то взаимодействие с API вконтакте происходит строго по документации. Спасибо за внимание!
@catanfa
карма
33,0
рейтинг 0,0
многорукий шива
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (18)

  • +3
    Хм. А такое можно выкладывать на хабру?
    У меня где-то лежит скрипт для переноса дней рождения из vk в google календарь, но я не решился такое выложить. Не очень это и сложно вроде.
    • –3
      Да, всё это очень просто. Эта статья может сэкономить пару часов тому, что с VK API никогда не работал. Например, не сразу очевидно, какой тип приложения создавать, какие именно права необходимы приложению (groups, wall, offline, photos), и так далее. Более того, иногда удобно просто склонировать репозиторий и вызвать один метод, даже не открывая документацию по API.
      • +1
        Например, не сразу очевидно, какой тип приложения создавать, какие именно права необходимы приложению (groups, wall, offline, photos), и так далее.


        Но ведь это все описано в API. Искренне не понимаю… То есть Вы решили написать работу для людей, которым перед работой с каким-то API лень даже поверхностно изучить документацию? Так с чего эти люди будут читать эту статью?

      • +3
        Да за пару часов я и бутерброд успею доесть...

        image
      • 0
        Спасибо!

        Да не обращайте внимания на минусы, на Хабре стадо неблагодарных гениев, которые, если у них уже есть какое-то решение (рецепт) или они что-то видели, будут минусовать и кричать «баян».
    • 0
      выкладывай, поделись с людьми, может кто то еще не пробовал (например я)
    • 0
      Спасибо, не надо
      • 0
        Вы пробовали этот способ?
  • 0
    И чего именно вам не удалось найти нигде в интеренете?
    • 0
      Всё нашёл именно в Интернете. Цель статьи — сэкономить время следующим желающим.
  • –4
    «((»
  • 0
    А у вас через каждые постов 10-15 ВК капчу не требует ввести?
    • +1
      опытным путем выявлено время. Если постить не чаще 1 раза в 5 минут — то ничего не блокируется.

      За частые посты бывает еще блокируют токен — примерно на сутки.
  • 0
    Кстати, по поводу «мне не удалось отыскать в Интернете чёткого пошагового руководства». Я в свое время нашел инструкцию в блоге разработчиков самого ВК. Мои скрипты автопостят Фото Дня и новости с моего проекта в группу vk.com/ru_photogorky уже пару лет
  • –1
    Вот кстати немного кода для тех кто хочет не постить в ВК, а брать оттуда: hamdeew.ru/page/rabotaem-s-vk-api-iz-php
    Использовал в работе вот эту реализацию VK SDK: github.com/AndreyGeonya/vkPhpSdk
  • –1
    Школьники на Хабре?(Понимаю, что своим комментарием словлю кучу минсов, но не смог сдержаться)

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