Подробный анализ API Vkontakte – часть 1

Как это работает?
Вы можете загрузить любое приложение Adobe Flash формата .SWF и использовать API ВКонтакте для хранения любых переменных и обмена информацией с серверами ВКонтакте.

Ваши приложения также смогут обращаться к любым другим серверам. Для реализации большинства востребованных приложений (игры, чаты, тесты, системы IM) достаточно обмена переменными с серверами ВКонтакте.

Какие переменные передаются SWF-файлу при включении его в HTML-код ВКонтакте?

Посредством flashvars передается 5 переменных:
api_id – это id запущенного приложения.
user_id – это id пользователя, со страницы которого было запущено приложение.
group_id – это id группы, со страницы который было приложение.
viewer_id – это id пользователя, который просматривает приложение.
viewer_type – это тип пользователя, который просматривает приложение.

Если приложение установлено на странице группы, то переменная viewer_type может принимать следующие значения:
3 – если пользователь является администратором группы.
2 – если пользователь является руководителем группы.
1 – если пользователь является участником группы.
0 – если пользователь не состоит в группе.

Если приложение установлено на странице пользователя, то переменная viewer_type может принимать следующие значения:
2 – если пользователь является владельцем страницы.
1 – если пользователь является другом владельца страницы.
0 – если пользователь не состоит в друзьях владельца страницы.

» Нет комментариев

Краткое описание API Vkontakte – часть 5

13) Методы getHighScores и setUserScore используют глобальные переменные 16, 17 и 32 .. 32+max_scores-1 для организации глобальной таблицы рекордов, что удобно для приложений-игр. В глобальной переменной 16 хранится текущее количество записей в таблице рекордов, а в переменной 17 – максимальное (max_scores). Переменные, начиная с 32-й, хранят саму таблицу – в виде троек score, user_id, user_name, разделенных символом с кодом 31.

13.1) Метод getHighScores возвращает текущую таблицу результатов. По непонятным мне причинам она возвращается вовсе не в виде списка строк score_1 user_id_1 user_name_1 score_2 …, а в гораздо более хитром виде, используемым для демонстрации того, на что способен XML.

13.2) Метод setUserScore добавляет в таблицу результат текущего пользователя, переданный в параметре score. Желательно использовать в качестве score целые 32-битные числа. При этом новый результат добавляется в таблицу, а если она уже заполнена – вытесняет наихудший из имеющихся, если он, конечно, хуже добавляемого.

14) Конечно же, методы getServerTime, getUserInfo, getMessages, sendMessage, getHighScores и setUserScore могли бы быть реализованы разработчиком приложения самостоятельно с помощью метода Execute, равно как и getVariable/putVariable. Они были добавлены в API для того, чтобы продемонстрировать возможные способы обмена данными через переменные, и чтобы разработчики имели возможность создавать несложные приложения, не вникая в все тонкости очень мощного метода Execute.

» Нет комментариев

Краткое описание API Vkontakte – часть 4

10) Часть переменных каждого пользователя доступна на чтение из-под других пользователей. Это переменные 1280-1791. Номер нужного пользователя передается в параметре запроса user_id.

11) Метод getServerTime есть обертка для getVariable(0).
Метод getUserInfo есть обертка для getVariable(1280) и getVariable(1281). См. также 13.1 ниже и рис. 1.

12) Методы getMessages и sendMessage используют переменные 2064, 3072, 2080-2207 для организации простой циклической очереди сообщений, удобной, например, для реализации чата. А именно, в переменной 2064 хранится общее количество сообщений, уже записанных в очередь, в переменной 3072 – количество сообщений, прочитанных текущим пользователем, а в переменной 2080+(i mod 128) хранится i-ое сообщение (i>=0; в эту переменную записываются id пользователя, время отправки сообщения, имя пользователя и само сообщение в виде одной строки, разделяемой на поля символом с кодом 31).
12.1) sendMessage добавляет сообщение, переданное в параметре message, в очередь.
12.2) getMessages возвращает все сообщения, еще не прочитанные пользователем. Если передан ненулевой целочисленный параметр messages_to_get, возвращается указанное количество последних сообщений, даже если они были ранее прочитаны пользователем.

» Нет комментариев

Краткое описание API Vkontakte – часть 3

8) Каждому экземпляру приложения доступно до 4096 переменных (0-4095), в каждой из которых можно хранить строку из не более чем 255 байтов. Для каждого приложения (идентифицируемого api_id) эти переменные уникальны. Переменные инициализируются пустой строкой. Кроме того:
8.1) Переменные 0-1023 – global vars: зависят только от api_id.
8.2) Переменные 1024-2047 – user vars: зависят от api_id и id пользователя, запустившего приложение. Иначе говоря, у различных пользователей, запустивших данное приложение, будут свои копии этих переменных. Однако если один и тот же пользователь запустит сразу несколько копий одного и того же приложения, эти переменные у них будут общими.
8.3) Переменные 2048-3071 – session vars: зависят от api_id и session – целочисленного идентификатора сеанса (комнаты), передаваемого в параметре запроса session. Иначе говоря, в каждой комнате (сеансе) эти переменные свои. Один и тот же пользователь не может одновременно участвовать более чем в четырех сеансах. Пользователь считается подключившимся к сеансу, как только он совершил запрос с соответствующим параметром session.
8.4) Переменные 3072-4095 – instance vars: зависят от api_id, user_id и session_id.
8.5) Кроме того, переменные делятся на non-volatile (хранимые произвольно долгое время), и volatile (эти переменные могут быть стерты через час после записи). Все незарезервированные переменные с номерами 0-1535 являются non-volatile, переменные 1536-4095 – volatile. В volatile-переменной можно хранить до 4095 байтов, в non-volatile – до 255 байтов.

9) Переменные 0-15, 1024-1039, 1280-1295, 2048-2063 зарезервированы. Они в основном доступны только на чтение и содержат следующие значения:
0 — unixtime на сервере
1280 — id текущего пользователя
1281 — имя текущего пользователя
2048 — id (номер) текущего сеанса/комнаты
2049 — название текущего сеанса/комнаты (эта переменная доступна на запись)

» Нет комментариев

Краткое описание API Vkontakte – часть 2

5) Необязательные параметры:
5.1) session – номер сеанса (целое число, по умолчанию 0)
5.2) test_mode – если этот параметр не ноль и если соответствующая опция включена в настройках приложения на сайте, разрешает тестовые запросы к данным приложения. При этом аутентификация не проводится и считается, что текущий пользователь (viewer_id) – это автор приложения. Это позволяет тестировать приложение без загрузки его на сайт. Рекомендуется отключать эту опцию в настройках приложения по завершению тестирования.
5.3) format – сейчас xml или json, по умолчанию – xml.

6) В результате обработки запроса приложению возвращается ответ в виде text/xml, кодировка utf-8.
Если произошла ошибка, ответ выглядит как <error>Информация об ошибке</error>.
Если запрос успешно выполнен, ответ выглядит как
<response>Возвращенные значения</response>

7) Доступные методы: putVariable, getVariable, getServerTime, getUserInfo, getMessages, sendMessage, getHighScores, setUserScore
7.1) Метод putVariable помещает в переменную, номер которой задан в параметре key (0-4095), значение, переданное в параметре value (строка в utf-8, не более 255 байтов).
7.2) Метод getVariable возвращает значение переменной, номер которой задан в параметре key (0-4095).
7.3) Остальные методы являются надстройкой над putVariable/getVariable/Execute и будут разъяснены позже.

» Нет комментариев