среда, 8 января 2014 г.

Java работа с API VK

Иногда возникает необходимость автоматизировать некоторые действия в какой-нибудь абстрактной, или не совсем абстрактной, социальной сети, такой как vk.com. Например, в последнее время были популярны обсуждения на тему скачивания своей аудиоколлекции на постоянные носители.
Здесь будем рассматривать только один частный случай - API для vk.com.
Итак, задача - собирать сообщения из интересующей группы, чтобы не загромождать кодом этот пост, построим лишь простой "скелет", для возможных будущих наработок.

Кратко о принципе работы интерфейса, предоставляемого разработчиками этой небезызвестной социальной сети :
  • Для работы через API вам потребуется stand-alone приложение, создать его можно вот здесь. Там все довольно просто, выбираете название и тип. Вообще говоря, создавать свое приложение вовсе не обязательно, можете и мое использовать - дело в том, что при дальнейшем запросе определенных прав для данного приложения, мы получим токен, и этот токен самому приложению известен не будет, следовательно, даже если вы используете мое приложение, я не смогу получить доступ к вашей конфиденциальной информации. 
  • Дальше, для авторизации будет использоваться протокол OAuth, все что нужно сделать на этом шаге - создать правильную строку запроса, об этом расписано вот тут.
    https://oauth.vk.com/authorize? 
     client_id=APP_ID& 
     scope=PERMISSIONS& 
     redirect_uri=REDIRECT_URI& 
     display=DISPLAY& 
     v=API_VERSION& 
     response_type=token 
    APP_ID - идентификатор приложения, которое вы создали на предыдущем шаге.
    PERMISSONS - те права, которые вы хотел бы предоставить вашему приложению, их список можно найти вот тут, там же есть и пример.
    REDIRECT_URI - страничка, на которую вас перенаправит, после предоставления прав, для нашего случая можно использовать :
    https://oauth.vk.com/blank.html
    
    В адресной строке будет токен, который, в общем, и является конечной целью.
    Остальный опции сейчас не представляют для нас интереса, по-этому просто перечислю выбранные для них значения :
    DISPLAY - page
    API_VERSION - 5.0
    В response_type указываем, что нам нужен только токен.
  • На этом шаге у нас уже есть необходимый токен, все что теперь осталось сделать - открыть документацию на интересующий нас метод API и составить верный запрос.
    Итак, мы планируем запросить все записи со стены в определенной группе, для этого идеально подойдет wall.get, сам запрос должен выглядеть следующим образом :
    https://api.vk.com/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN
    
    METHOD_NAME = WALL.GET
    Перечислю нужные параметры :
    domain - краткое название группы, сейчас все пытаются "выделиться" и заменюят ID группы в адресной строке, на что-то более-менее читабельное. (если же к целевой группе нужно обратиться по идентификатору, то тут вам возможно подойдет owner_id)
    count - количество возвращаемых записей
    access_token - тот самый токен, что мы уже получили. Тут есть некоторая тонкость, к стене открытой группы можно получить доступ и без указания уникального токена, но для того, чтобы получить записи из закрытой группы, в которой состоим, нужно обязательно указать токен, рассматривайте его как пропуск.
  • Вот в общем и все. Можно приступить к написанию кода.
Получаемый ответ будет в формате JSON, перечислю библиотеки, которые будем использовать :
  1. json-simple
  2. commons-io
  3. HttpClient
Из HttpClient нам понадобятся - httpcore, httpclient, commons-logging
Ниже приведу непосредственно код, он прост и думаю всем будет понятен.


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

Отправить комментарий