Чтобы обратиться к методу API ВКонтакте, Вам необходимо выполнить
POST или
GET запрос такого вида:
https://api.vk.com/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN&v=V
Он состоит из нескольких частей:
- METHOD_NAME (обязательно) — название метода API, к которому Вы хотите обратиться. Полный список методов доступен на этой странице. Обратите внимание: имя метода чувствительно к регистру.
- PARAMETERS (опционально) — входные параметры соответствующего метода API, последовательность пар name=value, разделенных амперсандом. Список параметров указан на странице с описанием метода.
- ACCESS_TOKEN (обязательно) — ключ доступа. Подробнее о получении токена Вы можете узнать в этом руководстве.
- V (обязательно) — используемая версия API. Использование этого параметра применяет некоторые изменения в формате ответа различных методов. На текущий момент актуальная версия API — 5.101. Этот параметр следует передавать со всеми запросами.
Параметры могут передаваться как методом GET, так и POST. Если вы будете передавать большие данные (больше 2 килобайт), следует использовать POST.
Например, вызовем метод
users.get для пользователя с идентификатором
210700286:
https://api.vk.com/method/users.get?user_ids=210700286&fields=bdate&access_token=533bacf01e11f55b536a565b57531ac114461ae8736d6506a3&v=5.101
В ответ на такой запрос Вы получите ответ в формате
JSON:
{
- "response":[{
- "id":210700286,
- "first_name":"Lindsey",
- "last_name":"Stirling",
- "bdate":"21.9.1986"
- }]
}
Каждый метод API имеет собственный набор входных параметров. Помимо этого, существуют общие параметры, которые могут быть использованы во всех методах:
- lang — определяет язык, на котором будут возвращаться различные данные, например, названия стран и городов. Может содержать строковое обозначение языка или его идентификатор (получить идентификатор языка пользователя Вы можете методом account.getInfo).
- ru (0) — русский,
- uk (1) — украинский,
- be (2) — белорусский,
- en (3) — английский,
- es (4) — испанский,
- fi (5) — финский,
- de (6) — немецкий,
- it (7) — итальянский.
Кириллические имена будут автоматически транслитерированы в латиницу для всех языков, кроме русского, украинского и белорусского.
- test_mode=1 — тестовый режим, позволяет выполнять запросы из нативного приложения без его включения на всех пользователей.
К методам API ВКонтакте (за исключением методов из секций
secure и
ads) с ключом доступа пользователя или сервисным ключом доступа можно обращаться не чаще
3 раз в секунду. Для ключа доступа сообщества ограничение составляет
20 запросов в секунду. Если логика Вашего приложения подразумевает вызов нескольких методов подряд, имеет смысл обратить внимание на метод
execute. Он позволяет совершить до 25 обращений к разным методам в рамках одного запроса.
Для методов секции
ads действуют собственные ограничения, ознакомиться с ними Вы можете на
этой странице.
Максимальное число обращений к методам секции
secure зависит от числа пользователей, установивших приложение. Если приложение установило меньше 10 000 человек, то можно совершать 5 запросов в секунду, до 100 000 — 8 запросов, до 1 000 000 — 20 запросов, больше 1 млн. — 35 запросов в секунду.
Если Вы превысите частотное ограничение, сервер вернет ошибку с кодом
6: "Too many requests per second.".
Помимо ограничений на частоту обращений, существуют и количественные ограничения на вызов однотипных методов. По понятным причинам, мы не предоставляем информацию о точных лимитах.
После превышения количественного лимита доступ к конкретному методу может требовать ввода капчи (см.
captcha_error), а также может быть временно ограничен (в таком случае сервер не возвращает ответ на вызов конкретного метода, но без проблем обрабатывает любые другие запросы).
Чтобы осуществлять кроссдоменные запросы к API, Вы можете использовать протокол
JSONP. Для этого необходимо подключать к документу скрипт с адресом запроса в
src. Запрос должен содержать дополнительный параметр
callback c именем функции, которая будет вызвана при получении результата.
Например:
<html>
- <title>JSONP</title>
- <head></head>
- <body>
- <script type="text/javascript">
- var script = document.createElement('SCRIPT');
- script.src = "https://api.vk.com/method/users.get?user_ids=210700286&fields=bdate&v=5.101&callback=callbackFunc";
- document.getElementsByTagName("head")[0].appendChild(script);
- function callbackFunc(result) {
- alert(result.response[0].first_name)
- }
- </script>
- </body>
</html>
В нашем примере после загрузки документа вызывается метод
users.get, а после получения ответа от сервера управление передается функции
callbackFunc(), которая выводит содержимое поля
first_name из ответа во всплывающем окне.
<?php
- $user_id = 210700286;
- $request_params = array(
- 'user_id' => $user_id,
- 'fields' => 'bdate',
- 'v' => '5.52',
- 'access_token' => '533bacf01e11f55b536a565b57531ac114461ae8736d6506a3'
- );
- $get_params = http_build_query($request_params);
- $result = json_decode(file_get_contents('https://api.vk.com/method/users.get?'. $get_params));
- echo($result -> response[0] -> bdate);
?>
В нашем примере скрипт выводит дату рождения пользователя (
bdate), полученную обращением к методу
users.get.
Open API — JS-библиотека для упрощения работы с API ВКонтакте на внешних сайтах. Более подробно узнать о ней Вы можете в
отдельном руководстве.
<script type="text/javascript">
- VK.Api.call('users.get', {user_ids: 210700286, fields: 'bdate'}, function(r) {
- if(r.response) {
- alert(r.response[0].bdate);
- }
- });
</script>