Api — API ВКонтакте, в PHP


Содержание

Как отправить пост вконтакте через PHP? Автопостинг Вконтакте API PHP. Vkontakte API PHP.

Рассмотрим как отправить пост вконтакте через PHP?

для этого Вам понадобится токен из предидущего поста

Отправляем пост на стену группы.
Чтобы запостить сообщение в группу Вконтакте необходимо выполнить метод API wall.post, который отправит POST-запрос на адрес:
https://api.vk.com/method/wall.post
с параметрами:
Поле Значение
access_token

Полученный ранее токен доступа.
owner_id
-1234567
ID Вашей группы со знаком «-» вначале
from_group 1 — публиковать в группе
message Текст Вашего сообщения
attachments
медиа данные(ссылка, фото, видео и т.д.) перечисленные через «,»
например: http://yamaker.ru,photo1234567_1264455
v
5.34
При успешном выполнении запроса вернется ответ, в котором будет указан post_id — ID Вашей публикации.

Как прикрепить хэштеги в сообщении?
Все очень просто, укажите в начале или в конце текста список хэштегов(например: #автопостинг #api) и Вконтакте сам их распознает.

Как прикрепить изображение к посту?
Перед тем, как отправлять пост на стену, необходимо отдельно загрузить публикуемое изображение и сохранить его.

Получаем адрес загрузки с помощью запроса на адрес:
https://api.vk.com/method/photos.getWallUploadServer?access_token=&group_ > В результате должен придти ответ с параметром upload_url — адрес загрузки фото.

Загружаем и сохраняем фото на сервере Вконтакте:
Отправляем файл по указанному адресу. Можно сделать так: curl -X POST -F ‘photo=@/var/www/myphoto.jpg’ ‘’ или с помощью модуля CURL для php.

При успешной загрузке придет ответ с параметрами(server, hash, photo), которые необходимо передать в следующем запросе для сохранения фото:
https://api.vk.com/method/photos.saveWallPhoto?access_token=&group_ >

Получаем ответ с параметром id — ID загруженного изображения.

Формируем значение параметра фото в поле attachments = photo_, где photo_id — id загруженного изображения на предыдущем этапе.

Вот и все. Автопостинг в группу социальной сети Вконтакте готов. ;)

Что то не получилось? Пишите! Попробую помочь.

Автоматический постинг в ВК wall.post с attachment

Ваяем автоматический постинг в ВК wall.post с attachment (фото) на PHP. Погнали.
В ВКонтакте хоть и есть документация, но с wall.post есть особенности. Для начала регистрируем приложение и оно должно быть Standalone, настройки такие:

Если постить в сообщество, то вы должны иметь на неё админские права, а при создании приложения эту группы выбрать.

Первым делом получим токен (я использовал класс за авторством Dmitriy Nyashkin:

Токен надо получить 1 раз, т.е. два разных скрипта — один только для получения токена, второй — для постинга записей себе или в группу/сообщество.

UPD: если в массиве $result[‘photo’] пусто, вероятно версия php > 5.5, а в ней вместо curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); надо использовать CURLFile, рабочий пример ниже.

И, пожалуй, самое попадалово, что при добавлении фотографии её название (caption) надо прогнать urlencode. Нетривиальная особенность, а в документации про это ничего не сказано (или я слепой).

Кратко, порядок такой:

  • Регистрируем приложение (Standalone! — важно)
  • Получаем токен (1 раз)
  • Сначала постим фото и получаем его id
  • А затем уж создаём саму запись с этой картинкой
  • Всё! Радуемся.

У меня таким макаром постятся фото, новые записи из блога и юбилейные даты из Петербургского календаря. По времени создания записей видно что они автоматические.

Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670) или перепиской в ВК.
1000 р./час.

Помогла статья? На поездку на море (Охотское):


Api — API ВКонтакте, в PHP

Для создание ботов в социальной сети Вконтакте нужно несколько вещей:

  1. Специальный standalone token ;
  2. Токен вашей группы;
  3. Сам скрипт с ботом;
  4. Группа с подключенным сервером и API.

Получение токена

Первым делом необходимо получить standalone token вместе с токеном вашей группы. Для этого переходим в раздел для разработчиков и в » Мои приложения «. Здесь создаем новое приложение. Название приложения можете выбрать любым, главное чтобы оно было Standalone-приложение.

Включите Open API после создания приложения. В него пропишите сайт, с которым будет связано ваше приложение, а также базовый домен. В нашем случае это itProger.com .

После этого необходимо перейти по этой ссылке . Также вы её видите ниже:

Единственное, вам необходимо изменить client_id и установить чтобы оно было равным ID вашего приложения.

Далее вы нажимаете на кнопку Разрешить и после этого получаете токен, который будет записан в ссылке. Копируете токен от знака равенства ( = ) и до амперсанда ( & ).

После этого создайте новую группу или воспользуйтесь вашей существующей группой. Зайдите в настройке, после чего в Ключи доступа и нажмите Создать ключ . Установите все права для ключа и после этого вы сможете получить токен вашей группы, который вам пригодиться для создания бота.

Создание самого бота

Для создания бота нам понадобиться три файла:

  • config — файл служащий исключительно для нас. В нем мы запишем различные настройки и данные, которые сможем в дальнейшем использовать в других файлах;
  • photos — файл для обработки альбома. В этом файле мы будем обрабатывать альбом, получать из него все изображение и записывать их в новый txt файл в специальном формате, который в дальнейшем будем передавать в качестве прикрепленного изображения к сообщению;
  • bot — основной файл с ботом. Здесь мы прописываем обработку данных от пользователя, а также передачу сообщений от бота к пользователю Вконтакте.

Ниже представлены эти три файла. Они полностью готовы и с рабочим кодом. Детальное описание всего что в них происходит вы можете получить из видео.

Детальное описание создания бота на языке PHP под систему Вконтакте:

Последнее что необходимо будет сделать, так это прописать URL адрес скрипта bot.php в группе, в настройках API:

После этого можете написать сообщение в группу и бот будет вам отвечать. Напишите «Фото в студио» и бот пришлет вам случайную фотографию из альбома.

Как работать с vk API вконтакте

Здравствуйте, уважаемые читатели блога LifeExample, у многих из нас есть собственная страница в социальной сети вконтакте, все мы знаем, что каждый пользователь вконтке имеет возможность оставлять комментарии на стене других пользователей и различных сообществ. Сегодня я хочу показать вам как можно работать с данными этого сервиса, через предоставляемый вконтактом инструмент vk api , а именно как с помощью PHP получить все сообщения любого пользователя и его друзей.

Цукерберг рекомендует:  Нестареющий jQuery и jQuery UI

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

Создание приложения для получения доступа к vk API

Нас будет интересовать обращение по HTTP протоколу к адресу http://api.vk.com/api.php . На него мы будем высылать команды с определенными параметрами, а в ответ получать какие либо данные, предоставляемые сервисом вконтакте.


Самым первым делом необходимо создать новое приложения в VK.com, поскольку для работы с vk API надо иметь на это специальную подпись. Кроме того надо проштудировать всю информацию представленную в документации сервиса

Внимание! Если нам нужно только обращаться со своего сайта к API, и при этом мы совершенно не думаем о каких либо приложениях для мобильных телефонов, или декстопных приложениях,то все равно придется зарегистрировать его во вконтакте.

Чтобы создать свое приложение нужно перейти к форме создания приложения вконтакте и заполнить все необходимые поля:

После заполнения сохраняем введенные значения и получаем интересующие нас данные: id приложения и секретный ключ . Используя их мы в дальнейшем сможем работать с vk API.

После регистрации своего приложения мы сможем управлять настройками приложения созданного приложения

После этого нам потребуется класс для работы с vk API для этого скачиваем php библиотеку прямо с vk.com.

Права приложения

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

Предварительно, перед началом использования vkapi.class.php, надо разобраться, с тем как нашему созданному приложению, получать права для работы с тем или иным пользователем.

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

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

Советую вам самостоятельно ознакомиться с перечнем прав и их битовых масок.

Если Вы хотите получить права на «доступ к друзьям» и «доступ к обычным и расширенным методам работы со стеной», то ваша битовая маска будет равна: 2 + 8192 = 81924.

Если, имея битовую маску 81924, вы хотите проверить, имеет ли она доступ к расширенным методам работы со стеной, то можете сделать это таким образом:

Если права подтверждены, то 81926 & 81924 даст результат = 8192, иначе =

Чтобы web-приложение запросило разрешение на те или иные права, нужно дать пользователю ссылку специального формата:

  • APP_ID – идентификатор вашего приложения;
  • SETTINGS – запрашиваемые права доступа приложения;
  • REDIRECT_URI – адрес, на который будет передан code. Этот адрес должен находиться в пределах домена, указанного в настройках приложения.

Перейдя по такой ссылке, пользователю, будет предложено авторизоваться на vk.com и подтвердить разрешение на запрашиваемые нашим приложением права.

В моем случае ссылка будет выглядеть таким образом:

Параметром scope , я запрашиваю у пользователя разрешение на использование всех имеющихся данных, перечислив все известные идентификаторы прав.


После подтверждения, vk api высылает назад на указанный redirect_uri код, по которому мы сможем в течении часа получать access_token чтобы работать с API вконтакте.

Закончив процесс получения разрешения, от пользователя на доступ к его информации, мы можем начинать работу с API вконтакте, а именно с классом vkapi.class.php

PHP Пример работы с API vkontakte

$api_id = 4471324 ;
$secret_key = ‘Y1fXgdIl3aPiejBHO4g’ ;

//получить битовую маску приложения для конкретного пользователя
$resp = $VK -> api ( ‘getUserSettings’ , array ( ‘uid’ => ‘150317299’ ) ) ;
echo verRoles ( $resp [ ‘response’ ] ) ;

Результат работы скрипта должен вывести информацию о правах приложения по отношению к пользователю с >. Получить битовую маску прав приложения можно командой getUserSettings .

Как видите скрипт вывел перечень доступных прав исходя из значения битовой маски. По умолчанию для каждого нового пользователя битовая маска будет равна 0, пока посетитель сайта не перейдет по указанной ссылке «Разрешить приложению Moguta работать с моими данными из VK».

Подтвердив разрешение, пользователь даст нам возможность работать с его данными и мы сможем, выполнить несколько полезных в разных задачах методов, например.

Получить список друзей пользователя:

Получить список последних сообщений на стене пользователя

Получение лайков с указанной страницы.

Весь перечень доступных для vk Api методов перечислен в этом разделе документации

И в конце статьи хочу указать на одну огромную неприятность, о которой сказано в описании права wall отвечающего за работу со стеной.

Внимание, данное право доступа недоступно для сайтов (игнорируется при попытке авторизации).

Это значит, что автоматический репост сообщений на стену из веб-приложений запрещен и можно даже не пытаться делать авторепост новостей в группу средствами API вконтаке. Данный факт несколько огорчил меня, поскольку все, что мне было надо от vk api это отправлять новость с сайта moguta.ru в группу автоматически.

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

Автопостинг на стену вконтакте без vk api

В сети я нашел полезный в данной задаче класс vk_poster.class.php:

Данный класс позволяет репостить на стену контакта, с помощью php библиотеки CURL. Получив необходимые для авторизации данные этот класс эмитирует действия пользователя, как будто тот авторизуется в vk.com переходит на указанную стену, и отправляет сообщение от своего имени.

Т.е. весь репост сводится к использованию CURL без API vk. Из минусов данного подхода, только не высокая скорость работы приложения, поскольку нужно в несколько этапов отправлять последовательность HTTP запросов, чтобы осуществить публикацию информации на стене сообщества, либо конкретного пользователя.

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

Лучшие библиотеки для работы с VK API на C++, Java, Python и других языках

Работать с API ВКонтакте доводилось многим из нас, и каждый может сказать: работать с ним напрямую неудобно. Разумеется, было написано множество библиотек, предоставляющих удобный интерфейс работы с ним. Их можно и даже нужно использовать для облегчения работы и ускорения разработки. Сегодня tproger представляет подборку библиотек, набравших на GitHub больше всего звездочек и форков, для почти всех самых популярных ныне языков.


Недавно Вконтакте выпустили официальный SDK для работы с API средствами Java. Страница проекта на GitHub содержит множество примеров, вот один из них, для публикации фотографии на странице пользователя:

InTouch — кроссплатформенная библиотека для С#, которая весьма активно развивается. На момент публикации заявлена полная совместимость с версией 5.57 VK API. Вот пример работы с библиотекой:

Или даже короче:

Node.js

Node-vkapi — современная библиотека для JavaScript, основанная на промисах. Она доступна так же в npm:

Вот пример кода, который публикует текст на стену пользователя с помощью node-vkapi:

VK API Lib — небольшая библиотека для работы API, написанная на чистом C++. Из зависимостей требуется только Curl. Библиотека предоставляет базовый класс VK::Client с методами авторизации и выполнения запросов к API.

Цукерберг рекомендует:  Лайфхак наиполезнейшая функция var_export()

На основе его вы можете создавать свои классы для работы с разделами. В примере приведен класс VK::Messages . Базовый пример использования:

Python

Python-библиотека, обеспечивающая очень простую работу с API ВКонтакте. Судите сами:

В настоящее время библиотека достаточно активно развивается, однако до этого в её разработке был перерыв примерно на год. Всегда хочется использовать актуальные инструменты, поэтому стоит упомянуть и другую библиотеку для Python. Вот как выглядит загрузка фотографии на сервер с её помощью (комментарии сохранены):

Библиотека на PHP, использующая, по словам автора, «сахалинские технологии», чтобы облегчить труд разработчика. Написана в ООП-стиле. Одна из самых крутых ее фич — генерация на основе запроса на PHP готового кода для специального метода ВК execute.

Пример просмотра последних 200 сообщений:

vkontakte_api — ruby-адаптер для ВКонтакте API. Он позволяет вызывать методы API, загружать файлы на сервера ВКонтакте, а также поддерживает все 3 доступных способа авторизации (при этом позволяя использовать стороннее решение).

Работать с ним можно, например, так:

Простенькая, полностью асинхронная библиотека AnyEvent::VK, выполняющая все запросы по https. По сути является клиентом. Автор рекомендует использовать Async::Chain для комбинирования вложенных колбеков.

Для мобильной разработки

Android (Java)

Еще одна официальная библиотека, на этот раз — для Android. Написана на Java и позволяет сильно упростить работу с API ВКонтакте из этого языка.

Пример отправки запроса:

Windows Phone (C#)

Последняя в этом списке официальная разработка: написанная на C# базовая библиотека для разработки на WP, похожая по функциональности на свои аналоги под Android и iOS.

Отправка запроса на список друзей:

iOS (Objective C)


Официальная библиотека от ВКонтакте, предназначенная для написания приложений под iOS. Написана на Objective-C.

Пример кода с отправкой запроса:

Для хипстеров

На Github есть библиотека и для этого языка — vkrs. Она не слишком активно развивается, но это уже хоть что-то. Вот так она выглядит в деле:

Golang

Как ни странно, была написана обёртка для VK API и на языке Go. Так же, как и остальные, она доступна на Github. Hello World на ней выглядит так:

Если для какого-либо языка вы знаете более актуальную или функциональную библиотеку — пишите в комментарии, мы обязательно обновим статью.

Как работать с API ВКонтакте

У меня часто спрашивают, как работать с API. Наиболее, популярной задачей, связанной с API, является — работа с API ВКонтакте. В данной статье я покажу, как работать с API ВКонтакте, а, главное, покажу Вам, что все API работают по единому принципу.

Вот порядок действий, который Вам необходимо сделать, чтобы начать работать с любым API:

  1. Найти документацию по нужному API.
  2. Посмотреть примеры подключения к API. Тут могут быть разные варианты. Например, на одном сервисе потребуют секретный ключ, выдаваемый после регистрации. На втором сервисе, все запросы не требуют секретных ключей. На третьем сервисе, есть и с секретным ключом, и без варианты работы. Иногда, секретный ключ называют токеном.
  3. Скопировать простой готовый код с сайта документации и проверить его работу. Если не работает, то ищите ошибку у себя, так как едва ли она будет у сервиса.
  4. Найти в документации метод, который решает Вашу задачу.
  5. Используя примеры и описание метода, отправить правильный запрос к API.
  6. В зависимости от формата ответа, разобрать его на «составные части«, а дальше уже делать то, что требуется — вывести пользователю, сохранить в файл, отправить в базу данных и тому подобное.

А в качестве примера следования данной инструкции мы разберём API ВКонтакте. Итак:

  1. Ссылка на документацию.
  2. В данном случае есть методы, которые общедоступны, а потому не требуют токена, а есть методы, требующие его.
  3. В данном случае, примеров на конкретном языке я не нашёл. Возможно, они есть, но явно не на виду. Обычно же, у API для каждого метода есть примеры на разных языках.
  4. Мы хотим вывести 5 последних записей со стены конкретного пользователя, а затем вывести их у себя на сайте. Нужный нам метод тут.

Теперь мы должны отправить запрос к API, используя описание метода. Делать мы это будем через PHP:

В данном случае, я использую API 5.3 (v=5.3), вывожу все записи независимо от автора (filter=others) со своей страницы (domain=myrusakov) в количестве 5 штук (count=5). Думаю, что здесь всё очень прозрачно.

Мы получили ответ в формате JSON, и теперь нам нужно перейти к последнему пункту — разобрать ответ на «составные части«. Дальше мы с Вами выведем записи со стены в более-менее читабельном виде на странице нашего сайта. Результирующий PHP-код:

response->items; // Получаем массив комментариев
for ($i = 0; $i text.»
«.date(«Y-m-d H:i:s», $wall[$i]->date).»

Как видите, всё очень просто. Самая сложная часть — разобрать на составные элементы. Я предпочитаю выводить результат от API через print_r, а уже затем писать обработку этого. Хотя можно посмотреть пример ответа в описании метода, а дальше уже написать парсер.

Вот так происходит работа с API ВКонтакте, и абсолютно аналогично она происходит с любым другим API.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления


Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 7 ):

    Остаётся только добавить, что если у кого-то не работает, обновите версию php, а то обработка json вроде бы есть только в 5.3 и выше.

    Спасибо) Появилась хорошая идея благодаря вашей статье!

    Все на странице выводится нормально, а это в виде «іРё РіСѓ». Есть какое-нибудь решение?

    добавьте в штекер AddCharsetDefault UTF-8

    Добавьте в файл htaccess следующее: AddDefaultCharset UTF-8

    Данные на сервер приходят в неправильной кодировке, как это можно исправить?

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

    Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.

    Api — API ВКонтакте, в PHP

    Для создания бота потребуется минимум кода, за счёт реализации большинства методов vk api в виде удобных функций.
    Также есть готовые модули, которые облегчают разработку:

    • Рассылка сообщений
    • Обработка команд
    • Работа с кнопками

    В библиотеке поддерживается:

    • Callback API
    • User Long Poll API
    • Bots Long Poll API
    • Execute
    • VKCoin API
    • Создание ботов на пользовательских аккаунтах
    • Работа с голосовыми сообщениями и документами


    1. Скачать последний релиз
    2. Подключить autoload.php. Вот так будет происходить подключение, если ваш скрипт находится в той же папке, что и папка vk_api-master
    Цукерберг рекомендует:  Программист - Как быть программистом и остаться с хорошим зрением

    Больше примеров есть на сайте с документацией
    Для удобства в каждого бота можно добавлять следущие константы:

    Минимальный Callback бот для бесед и сообщества

    Простой Callback бот для бесед и сообщества

    Простой LongPoll бот для юзера

    Простой LongPoll бот для сообщества

    Используется, когда callback скрипт во время выполнения много раз обращается к api, а вам нужно экономить запросы, чтобы не привышать лимит(высоконагруженные боты)

    Лучшая связка для высоконагруженных ботов. Но если вы делаете высоконагруженного бота, лучше посмотрите в сторону NodeJS, он справляется с этим намного лучше за счет асинхронности и многопоточности из коробки.

    Клавиатура VK API, PHP

    не могу разобраться с клавиатурой ВК. Документация ВК
    Как её реализовать? Искал в сети примеры/объяснения так не нашёл для PHP.

    Как добавить в данный код клавиатуру (что бы у пользователя появилось 4 варианта (команды) при нажатии на который отправлял бы соответствующее изображение.

    1 ответ 1

    Как говорится «Хочешь сделать хорошо, сделай это сам»… Вот как я реализовал клавиатуру для бота в ВК. API 5.92

    Всё ещё ищете ответ? Посмотрите другие вопросы с метками php vkontakte-api или задайте свой вопрос.

    Похожие

    Подписаться на ленту

    Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

    дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.13.35425

    Работа с API Вконтакте через PHP

    Многие знают о том, что у контакта есть API для различных действий. С помощью них можно и сообщение от имени пользователя послать, и его френдленту получить. Но проблема (по крайней мере для меня это проблема) в том, что не все методы API можно вызвать через сайт, для некоторых нужны desktop-решения. Вконтакте это описано так: внутри программы ставим компонент браузера, в который будет выводится форма с разрешением некоторых прав для программы и пользователь сам выбирает, что разрешить. Далее форма переходит на специальный адрес и из ссылки после # вытаскиваются необходимые параметры.


    Решил обойти это ограничение. Накатал небольшой класс

    класс для работы vkontakte api, php

    думаю, не осталось людей, которые бы не знали про крупнейшую социальную сеть (да и вообще, топ-сайт) россии — vkontakte.ru. конечно было было бы странно, не предоставляй этот сайт api для взаимодействия с приложениями пользователей. естественно, api есть, и к слову говоря, он гораздо более вменяемый (и простой, да ещё и с русским описанием), нежели api одноклассников.

    далее я приведу простейший класс для взаимодействия приложений (точнее, php скриптов) с сайтом vkontakte. ничего особо сложного нет, единственно что, потребуется добавить новое приложение, через которое и будет происходить взаимодействие с api vkontakte (как добавить приложение будет разобрано в следующей статье).

    далее привожу код класса. работать с ним очень просто: достаточно один раз внести основные данные (id пользователя, id приложения, секрет), после чего вызвать метод get() с 2 параметрами: имя требуемого метода api vkontakte и массив параметров, вида array(‘name1’ => ‘value1’, ‘name2’ => ‘value2’). всё остальное будет сделано автоматически. для простоты также будет считаться, что результат возвращается в виде json-данных (для xml несложно внести переделку, но особых «фишек» это не даст). сам код (для последующего примера код нужно скопировать и сохранить в файл cvk_api.php):

    /**
    * Класс для работы с api vkontakte.ru
    */
    class cvk_api <
    /** Уникальный идентификатор пользователя (Номер страницы) */
    const ID_MEMBER = ‘1’ ;

    /** Уникальный идентификатор приложения (ID приложения) */
    const ID_API = ‘2’ ;

    /** «Секрет» приложения (Защищенный ключ) */
    const SECRET = ‘3’ ;

    /** url для запросов к API */
    const API_URL = ‘http://api.vk.com/api.php’ ;

    public static $error = » ;

    /**
    * Основной метод для запроса данных
    *
    * @param $method string имя метода api
    * @param $method array дополнительные параметры api
    * @return array результат запроса или FALSE при ошибке
    */
    static function get ( $method , $params = array()) <
    if (empty( $method )) <
    self :: $error = ‘Не задан метод’ ;
    return FALSE ;
    > else <
    // обнулить статус ошибки
    self :: $error = » ;
    >

    $params [ ‘api_id’ ] = self :: ID_API ;
    $params [ ‘method’ ] = $method ;
    // версия API
    if (empty( $params [ ‘v’ ])) $params [ ‘v’ ] = ‘2.0’ ;

    // результат возвращаться в формате JSON
    $params [ ‘format’ ] = ‘JSON’ ;

    // упорядочить ключи по алфавиту
    ksort ( $params );

    // сформировать список значений вида key=value
    $datas = array();
    $strdatas = self :: ID_MEMBER ;
    foreach ( $params as $k => $v ) <
    $strdatas .= $k . ‘=’ . $v ;
    $datas [] = $k . ‘=’ . urlencode ( $v );
    >

    // формирование подписи
    $sig = md5 ( $strdatas . self :: SECRET );

    // полная строка запроса к API
    $url = self :: API_URL . ‘?’ . implode ( ‘&’ , $datas ) . ‘&sig=’ . $sig ;

    // получить результат
    $result = file_get_contents ( $url );

    if ( $result ) <
    // удалить ненужные символы
    $result = preg_replace ( ‘![\\x00-\\x1f]!’ , » , $result );

    // преобразовать json-строку в массив
    $arr = json_decode ( $result , 1 );

    // при наличии ошибка
    if (isset( $arr [ ‘error’ ])) < // записать её текст
    self :: $error = ‘Ошибка: ‘ . $arr [ ‘error’ ][ ‘error_msg’ ] . ‘ (‘ . $arr [ ‘error’ ][ ‘error_code’ ] . ‘)’ ;
    $arr = FALSE ;
    >
    > else <
    $arr = FALSE ;
    self :: $error = ‘Нет доступа к адресу ‘ . self :: API_URL ;
    >

    класс действительно получился очень простой. для общения с сервером может использовать любой из следующих адресов:

    запрос на любой из url приводит к идентичным действиям. основные и дополнительные параметры должны передаваться с помощью метода GET или POST. вопроса что выбрать не стоит в принципе: для большинства случае вполне подойдёт GET. если адрес с GET-запросом получается слишком длинным, переходим на POST. для простоты можно считать, что GET будет хватать всегда (и пожалуй более, чем в 99% случаев, так оно и есть). сформировав запрос, отсылаем его по одному из адресов выше и получаем результат в виде XML или JSON. JSON чуть проще, но требует версию PHP 5.2 и выше. именно начиная с этой версии в php появилась функция распаковки json-данных.

    для формирования запроса необходимы следующие данные:

      api_ >в зависимости от запрашиваемого метода, ответ будет отличаться (что логично: к примеру, у картинки не должно быть значения длительности). при возникновении ошибки в ответе содержится элемент error. на первых порах (если писать указанный выше класс с нуля, либо некорректно ввести требуемые данные) наиболее частой ошибкой будет неверная подпись (сигнатура). если не предусмотереть искусственную задержу, то уже на рабочем варианте, при достаточно большом числе пользователей, будет появляться ошибка о превышении допустимого числа запросов (разрешается делать не более 3 запросов в секунду с уникальным id пользователя и id приложения).

    пример кода для работы с данным классом:

    // подключение класса для работы с API VKontakte
    require ‘cvk_api.php’ ;

    // массив с параметрами для запроса методов API
    $params = array();

    $params [ ‘q’ ] = ‘а+’ ;
    $params [ ‘count’ ] = 10 ;
    $params [ ‘format’ ] = ‘JSON’ ;
    $params [ ‘test_mode’ ]= 1 ;

    // вызов метода audio.search
    $arr = cvk_api :: get ( ‘audio.search’ , $params );

    if ( FALSE === $arr ) <
    echo cvk_api :: $error ;
    > else <
    // вывод массива с полученными данными
    print_r ( $arr );
    >

    Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих