Как узнать api приложения вк
Так уж сложилось, что API Вк, реализован довольно хорошо, за исключением некоторых не логичных моментов, о которых я упомяну позднее. Но речь, сегодня не о качестве, а о конкретном применении.
Сразу необходимо сделать оговорку, помимо описания, я буду приводить куски рабочего кода к моей библиотеке, ссылку на которую я приведу в конце статьи. Библиотека работает на последней стабильной версии 5.5, если вырезать генераторы из пакетного получения, то должно работать на 5.4.
- Серверная авторизация(т.н. авторизация сайтов)
- Клиентская авторизация(Standalone)
- Авторизация сервера приложения
- Мы выводим ссылку для авторизации пользователя, которую форматируем в соответствии с документацией
- Пользователь переходит по ней и авторизуется
- Пользователя перенаправляют на REDIRECT_URI нашего приложения с GET параметром code
- Наше приложение должно выполнить запрос к API содержащий code, чтобы получить ключ доступа пользователя
- API отвечает, либо с объектом, содержащим ключ доступа, либо ошибкой.
Пример кода, с помощью которого можно провернуть это не хитрое дело.
Предполагается, что наш домен это localhost, а текущий файл test.php. Если, всё прошло хорошо, то в нашей переменной $token, будет содержаться ключ доступа пользователя, который прошёл авторизацию.
С момента, когда мы имеем ключ доступа, мы можем выполнять запросы к API. Общая логика запросов проста, вы передаёте специально сформированный запрос на URL API. Запрос должен содержать, название метода и аргументы.
Список методов, это одна из богатых вещей API. В нём вы можете встретить методы, которые не требуют ключ доступа для своей работы, следовательно вызывать их вы можете, не получая его.
При использовании библиотеки нам необходимо создать базовый объект, например так:
Пара примеров запросов с использованием библиотеки:
Через анонимную функцию в each, пройдёт ровно 100 объектов, содержащих данные о пользователях от 1 до 100. Заметьте, если мы уберём вызов функции, то не произойдёт никакого запроса, всё потому что вернётся объект, у которого переопределены магические методы __call и __get, что позволяет нам делать запрос, когда нам это действительно необходимо.
Хороший метод, который можно отыскать в API — execute. Он принимает параметр code в качестве аргумента, code — некий псевдо JavaScript, который позволяет нам выполнять наш код на стороне сервера, так-же он позволяет выполнять хранимые процедуры, которые мы можем создать при редактировании нашего приложения.
Эту вещь я не смог обойти стороной и реализовал её в библиотеке. В двух словах, она позволяет выполнить несколько запросов, как один. Смотрите следующий пример кода.
Как и обещал, одно из тех недоразумений, которое вы можете встретить в текущей версии API(5.21), метод users.get вернёт нам response, как массив, хотя в других местах, например friends.get, начиная с версии номер 5, нам возвращаются поля count и items, мне кажется это не совсем логичным, к тому же это требует лишнего кода при работе с API.
Так-же в библиотеке реализованы обработчики для некоторых операций, с вашей помощью их может стать больше.
С использованием библиотеки мы можем добиться довольно приятного и красивого кода, а это, самое важное в нашем не лёгком деле.
Вполне вероятно, что в коде остались какие-то недоразумения или баги, надеюсь на вашу внимательность и Pull Requests приветствуются.
Библиотека в большинстве своём отвечает стандарту PSR-0.
Надеюсь, мне удалось показать вам, что API Вконтакте не страшно, а даже приятно.
Благодарю за внимание!
UPDATE:
Можно установить через Composer: composer require "getjump/vk:*"
UPDATE 2:
Теперь минимальная версия 5.4, теоретически(по идее не используется большинство его функционала) может завестись и на 5.3, если не использовать короткий синтаксис для массивов.
В этом руководстве вы найдете базовую информацию о принципах работы API ВКонтакте и о подготовке к его использованию. Если вы уже работали с нашим API или с аналогичными сервисами других платформ, и знаете, какое приложение хотите создать, мы рекомендуем вам перейти в соответствующий раздел документации.
API (application programming interface) — это посредник между разработчиком приложений и какой-либо средой, с которой это приложение должно взаимодействовать. API упрощает создание кода, поскольку предоставляет набор готовых классов, функций или структур для работы с имеющимися данными.
Например, для получения данных о пользователе с идентификатором 210700286 необходимо составить запрос такого вида:
Ответ на наш запрос выглядит так:
Структура ответа каждого метода также строго задана, и при работе с API вы заранее знаете, что в поле id придет число, а в поле first_name — строка. Такие правила оговариваются на страницах с описанием метода и соответствующих объектов, которые он возвращает в ответе. Например, users.get — здесь описаны входные параметры метода и структура его ответа, а здесь — user подробно расписано каждое поле объекта из ответа.
Если вы уже имеете опыт работы с JSON, вам также может быть полезна информация о JSON схеме API ВКонтакте: JSON схема API ВКонтакте.
Объект из ответа может быть не уникален для конкретного метода. Например, объект пользователя с набором полей, содержащих данные о его образовании, возрасте, интересах, может возвращаться в ответе от методов users.get, users.search, groups.getMembers и еще нескольких.
В примере мы использовали метод users.get, который позволяет получить информацию о пользователях, но для разработки приложений этого будет мало. Чтобы использовать все возможности API ВКонтакте, нужно зарегистрировать своё приложение.
- Встраиваемое приложение — вы получите приложение, которое можно встроить во фрейм с внешного сайта. Готовые приложения можно увидеть в наших каталогах: Мини-приложения, Игры.
- Standalone-приложение — вы получите API_ID для внешнего сайта, мобильного или десктопного клиента. Основная мысль в том, что запросы к API должны отправляться с устройства пользователя. В интерфейсе такого приложения можно настроить SDK и подключить сертификаты для push-уведомлений.
- Сайт — вы получите API_ID для внешнего сайта и работы с API через сервер. Если вы хотите написать скрипт (например, на PHP), который будет обращаться к API ВКонтакте, выберите именно этот вариант.
- Скилл Маруси — платформа для создания приложений, которые взаимодействуют с голосовым помощником.
Совет. Если вы пока не знаете, какую платформу выбрать, используйте Standalone-приложение. Мы обычно рекомендуем его для тренировки.
После подтверждения откроется страница с информацией о приложении.
Откройте раздел Настройки в меню слева. В поле ID приложения будет число (например, 5490057). Это идентификатор вашего приложения, в дальнейшем он понадобится вам, чтобы указать значение API_ID, APP_ID или client_id.
ВКонтакте — социальная сеть, где есть дружеские связи, настройки приватности и даже черные списки. Многое зависит от того, кто просматривает страницу: кто-то увидит на ней всю ту же информацию, что и владелец, а кто-то — лишь общедоступные данные.
В API этот принцип сохраняется. Если вы скрыли список своих групп от не-друзей, то и через API ваши не-друзья не должны его увидеть. Поэтому почти все методы требуют авторизации пользователя перед началом работы. Проще говоря, сервер должен знать, кто к нему обращается за информацией, чтобы предоставить ее в том же виде, что и в основной версии сайта.
В общем случае для идентификации в API используется специальный ключ доступа, который называется access_token. Токен — это строка из цифр и латинских букв, которую вы передаете на сервер вместе с запросом. Из этой строки сервер получает всю нужную ему информацию. Есть разные способы получения токена, более того, он может быть выдан не только пользователю, но и сообществу, и сразу всему приложению — подробнее об этом вы можете прочитать здесь.
Мы воспользуемся самым простым способом (Implicit flow) и получим токен для работы с API из созданного вами на прошлом этапе приложения.
Откройте новую вкладку в браузере и введите в адресную строку такой запрос:
Число 5490057 в запросе нужно заменить на API_ID вашего приложения.
Нажмите Enter. Откроется окно с запросом прав. В нем отображаются название приложения, иконки прав доступа, и ваши имя с фамилией.
51eff86578a3bbbcb5c7043a122a69fd04dca057ac821dd7afd7c2d8e35b60172d45a26599c08034cc40a
Токен — это ваш ключ доступа. При выполнении определенных условий человек, получивший ваш токен, может нанести существенный ущерб вашим данным и данным других людей. Поэтому очень важно не передавать свой токен третьим лицам.
Поле user_id содержит id пользователя, для которого получен токен.
Теперь вы можете сделать вызов метода от своего имени. Например, получить список друзей, которые сейчас находятся на сайте.
Для этого введите в адресную строку:
и вставьте после знака "=" Ваш access_token, затем нажмите Enter. В ответе сервер вернет список идентификаторов ваших друзей, которые сейчас онлайн. Почитать подробнее о работе этого метода можно здесь. Заметьте, вы не указали в запросе, для какого пользователя (user_id) нужно получить список — сервер использовал значение по умолчанию, т.е. ваш идентификатор, который он получил из токена.
Подробное руководство о получении ключей доступа находится на этой странице.
Поэтому в API права доступа приложения разграничены, как и методы. Приложение может запросить доступ только к группам, а может — к группам, фотографиям и аудиозаписям. На этой странице перечислены все существующие права доступа, которые можно запросить.
Чтобы запросить права, используйте параметр scope диалога авторизации. Когда вы получали токен для своего приложения, в scope было указано значение friends — и в окне авторизации приложение запросило доступ к друзьям.
У каждого права доступа есть уникальное название ("friends", "video" и т.д.) и код (+2, +4, +4096).
В scope можно перечислить названия нужных прав доступа (например, scope=friends,video,photos), а можно указать сумму их кодов (например, scope=22). Каждый код представляет собой степень двойки, и полученную таким образом сумму (битовую маску) вы всегда можете проверить на предмет содержания какого-то конкретного кода (см. account.getAppPermissions).
Некоторые права доступа из соображений безопасности можно запрашивать только в Standalone-приложениях и только в процессе авторизации Implicit Flow, обратите на это внимание.
Вы познакомились с основными понятиями, связанными с API ВКонтакте. Дальше все зависит лишь от вашего вдохновения.
В недавней статье было рассмотрено, что такое REST API. Почитайте информацию по ссылке - это точно будет полезно.
ВК-API блиц
ВК предоставляет несколько реализаций API:
- Streaming/Long Poll - позволяет получить данные в реальном времени. Сразу же, при обновлении данных в ВК, мы получаем актуальную информацию, без обновления страницы. Streaming и Long Poll реализуют разные подходы, но суть их одинаковая.
- Виджеты для сайта - здесь всё просто: скопировал код, без хитрых настроек, и у тебя рабочий виджет на сайте.
- Open API - работает на клиенте. Так же просто настраивается и используется. Преимуществом является то, что не обязательно иметь сервер для выполнения запросов. Будет работать в обычном HTML + JS.
- Callback API - позволяет получать данные от самомого ВК, не выполняя запрос. В случае обновления данных, ВК сам нам присылает новые данные. Например, пользователь подписался на нашу группу, и ВК, автоматически пришлёт информацию об этом пользователе нашему скрипту.
- REST API - позволяет взаимодействовать с данными ВК из скрипта. Позволяет автоматизировать любые пользовательские действия.
Для нас, как для программистов, на данном этапе - интересен REST API. Который позволяет взаимодействовать с пользователями, группами, рекламой, и прочими сущностями. Подробнее, обо всех доступных методах можно почитать здесь.
Для получение доступа к REST API, необходимо иметь специальный ключ vk api token . Это уникальное значение, аналогично логину и паролю - идентифицирует пользователя, от имени которого выполняются запросы.
Как гласит 2 правило проектирования REST API - между запросами не должно сохраняться состояния. Система по определению не может использовать сессии, потому применение токена актуально для идентификации пользователя.
Получение токена состоит из двух частей: регистрации своего приложения и получение токена в этом приложении.
Создать приложение можно на странице. Указав название приложения, и выбрав его тип.
Я выбираю Standalone , потому что тогда можно будет получить токены с бОльшим возможностями, чем в остальных вариантах (придётся поверить мне на слово, что это правда).
Создав приложение и перейдя на вкладку настроек, будет показано: id приложения, секретный ключ
Теперь, имея id приложения, можно получить токен доступа. Для этого нужно сформировать ссылку, подставив в неё id своего приложения.
где вместо нужно вставить id своего приложения.
а в параметре scope - перечислены разрешения, которыми мы хотим наделить токен, список всех разрешений
Однако здесь, одним из самых важных разрешений является offline , которое создаёт бессрочный токен, не имеющий ограниченного времени жизни.
Если вы не хотите создавать своё приложение, то можете получить токен по ссылке
Перейдя по сформированной ссылке, откроется диалоговое окно, в которому будут зачитаны права показаны разрешения, которыми наделяется токен (чем больше указано scope свойств, тем больше будет этот список)
Подтвердив, произойдёт переадресация на страницу, в адресной строке которой будет access_token , expires_in равный нулю (что логично, учитывая, что мы указывали создание вечного токена)
Я сократил токен для сохранения читабельности. У вас он будет длиннее
Скопировав этот токен, можно делать первые запросы к API.
Как делать запросы к API
Сохраним полученный токен, потому как его нужно будет прикреплять к каждому запросу к VK API.
К слову, даже, если открыть в браузере сформированный адрес, то получим результат
Зная всё это, сделаем первый запрос, на получение всех личных записей со стены. За стену отвечает сущность wall, а метод его get, который возвращает список всех записей со стены пользователя.
И, в итоге, имя метода будет сформировано в виде имени сущности (wall).имя метода (get) - wall.get
Теперь нужно определиться с передаваемыми параметрами (PARAMS). Все доступные, обязательные параметры с описанием можно посмотреть на странице метода.
Я буду передавать owner_id который соответствует id моего пользователя.
По факту же, это поле является необязательным в текущих условиях. Так как по умолчанию, ownwer_id будет проставлен id текущего пользователя.
И, можно было бы просто дописать в виде строки к существующему URL-адресу: . owner_id=120159853
Теперь, осталось только собрать воедино все те части, которые были разобраны выше.
Для этого, можно написать такой код:
При том, что даже токен и версию теперь можно вынести в массив $params , для более централизованной записи.
В итоге, получаем обычный массив записей, который можем обработать как пожелаем
И, исходя из ответа выше, для получения записей выполним:
Резюме
Эта статья должна была показать вам, насколько просто пользоваться API, и какие преимущества открываются. Здесь было продемонстрировано, как получить токен vk, как делать запросы к vk api, на примере получения последних записей со стены пользователя.
И уже имея токен и полученные в этой статье знания - можете работать с любыми методами ВК. Удачи!
Также в статье будет рассказано, как без использования API вконтакте осуществить автоматическую отправку текста на стену группы.
Создание приложения для получения доступа к vk API
Внимание! Если нам нужно только обращаться со своего сайта к API, и при этом мы совершенно не думаем о каких либо приложениях для мобильных телефонов, или декстопных приложениях,то все равно придется зарегистрировать его во вконтакте.
Чтобы создать свое приложение нужно перейти к форме создания приложения вконтакте и заполнить все необходимые поля:
После заполнения сохраняем введенные значения и получаем интересующие нас данные: id приложения и секретный ключ . Используя их мы в дальнейшем сможем работать с vk API.
После регистрации своего приложения мы сможем управлять настройками приложения созданного приложения
Права приложения
Для доступа к данным пользователя, приложение должно обладать набором соответствующих прав.
Предварительно, перед началом использования vkapi.class.php, надо разобраться, с тем как нашему созданному приложению, получать права для работы с тем или иным пользователем.
Для всех приложений, api вконтакте предоставляет таблицу битовых масок, другими словами набор прав для приложения.
Советую вам самостоятельно ознакомиться с перечнем прав и их битовых масок.
Если Вы хотите получить права на "доступ к друзьям" и "доступ к обычным и расширенным методам работы со стеной", то ваша битовая маска будет равна: 2 + 8192 = 81924.
Если, имея битовую маску 81924, вы хотите проверить, имеет ли она доступ к расширенным методам работы со стеной, то можете сделать это таким образом:
Чтобы web-приложение запросило разрешение на те или иные права, нужно дать пользователю ссылку специального формата:
- APP_ID – идентификатор вашего приложения;
- SETTINGS – запрашиваемые права доступа приложения;
- REDIRECT_URI – адрес, на который будет передан code. Этот адрес должен находиться в пределах домена, указанного в настройках приложения.
В моем случае ссылка будет выглядеть таким образом:
Параметром scope , я запрашиваю у пользователя разрешение на использование всех имеющихся данных, перечислив все известные идентификаторы прав.
После подтверждения, vk api высылает назад на указанный redirect_uri код, по которому мы сможем в течении часа получать access_token чтобы работать с API вконтакте.
Закончив процесс получения разрешения, от пользователя на доступ к его информации, мы можем начинать работу с API вконтакте, а именно с классом vkapi.class.php
PHP Пример работы с API vkontakte
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?
$api_id = 4471324 ;
$secret_key = 'Y1fXgdIl3aPiejBHO4g' ;
Как видите скрипт вывел перечень доступных прав исходя из значения битовой маски. По умолчанию для каждого нового пользователя битовая маска будет равна 0, пока посетитель сайта не перейдет по указанной ссылке "Разрешить приложению Moguta работать с моими данными из VK".
Подтвердив разрешение, пользователь даст нам возможность работать с его данными и мы сможем, выполнить несколько полезных в разных задачах методов, например.
Телеграм-канал Программист и бизнес.
Каждый день интересные истории, как программист строит бизнес.
Эта статья не для программистов (они и так уже всё это знают), а для тех, кто только подходит к теме программирования. Или для тех, кто просто услышал термин VK API, и хочет понимать, что это такое.
Что такое API
Сайт Вконтакте с технической стороны представляет собой сложный комплекс программ, которые работают на серверах компании. Результат их работы отображается в браузерах или мобильных приложениях в виде знакомого всем сайта социальной сети. Пользователи могут взаимодействовать с сайтом – публиковать статьи, проводить поиск, подписываться на сообщества и так далее. Все эти действия обеспечиваются программами, которые работают совершенно незаметно для посетителей.
Этих программ (скриптов, как их называют программисты) может быть очень много, и они должны взаимодействовать друг с другом. Для этого разработаны специальные правила и протоколы, следуя которым, отдельные скрипты имеют возможность отвечать на вызовы и получать ответы от других. В результате всё огромное множество разнообразных скриптов работает как единое целое.
Совокупность этих правил и составляет единый интерфейс взаимодействия со сложной программной системой. Его называют API – Application Programming Interface.
Взаимодействие программных модулей именно через библиотеку API, это общепринятая норма. Без такого механизма строить сложные программные системы было бы просто невозможно. Ведь тогда каждый скрипт имел бы собственные правила приёма внешних команд и выдачи результатов. Взаимодействие каждых двух отдельных скриптов нужно было бы программировать отдельно, и весь проект был бы похоронен под огромной кучей разнородных правил. Разобраться в них не было бы никакой возможности. Если же в проект изначально закладывается принцип работы модулей только через API, тогда всё многообразие взаимодействий сводится к нескольким несложным правилам, которые универсальны и подходят для любого скрипта. Это очень удобно.
Чем же этот механизм может быть полезен простому программисту, который не состоит в штате компании Вконтакте и хочет просто написать какой-нибудь полезный скрипт для себя?
Где найти документацию по VK Api
Полноценной работе с API Вконтакте посвящены многочисленные статьи в Интернете, эта информация очень обширна. Мы здесь покажем решение только двух конкретных задач.
Примеры работы API VK на PHP
Далее нужно выбрать тип создаваемого приложения: встраиваемое, отдельное (stand-alone), или на сайте. Если выбираете последний вариант, то нужно будет ввести адрес сайта и базовый домен.
В любом из трёх случаев после создания появится страница новой программы, и потребуется открыть вкладку «Настройки». Там вам понадобится два параметра: ID приложения и защищённый ключ.
Теперь можно начинать программирование функции авторизации пользователя. Её код может быть таким:
Этот код выводит на экран ссылку для открытия окна авторизации пользователя.
А этот код получает универсальный токен доступа access_token:
Читайте также: