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

Существуют ли примеры исходных кодов приложений?
Мы подготовили для Вас исходные коды трех базовых приложений:
Чат – пример реализации чата для пользователей ВКонтакте. Скачать » Демо »
Города – пример реализации приложения записывающего данные пользователя. Скачать » Демо »
Тетрис – пример реализации игры, записывающей рейтинг. Скачать » Демо »

Смогут ли злоумышленники декомпилировать мой SWF-код?
Теоретически можно декомпилировать все, что угодно. Однако Вы можете усложнить эти процессы методом обфускации. Вы также можете использовать собственные серверные мощности, чтобы усложнить верификацию. Мы рекомендуем создавать такие приложения, которые бессмысленно декомпилировать или взламывать.

Что будет дальше?
Данная версия API – первоначальная, но уже она позволит реализовать практически все востребованные приложения. В будущем будет введен универсальный метод Execute, который потенциально сможет заменить все остальные методы и даст еще больше возможностей разработчику. Кроме того, ничего не мешает в будущем использовать API вне Flash-приложений.

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

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

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

Какие еще методы существуют?

getServerTime – обертка для getVariable(0).

getUserInfo – обертка для getVariable(1280) и getVariable(1281).

getMessages + sendMessage – используют переменные 2064, 3072, 2080-2207 для организации простой циклической очереди сообщений, удобной, например, для реализации чата.

Переменная 2064 хранит общее количество сообщений, уже записанных в очередь.
Переменная 3072 – количество сообщений, прочитанных текущим пользователем.
Переменная 2080+(i mod 128) содержит i-ое сообщение.
(i больше или равно 0; в этой переменной хранится строка с id пользователя, временем отправки сообщения, именем пользователя и текстом сообщения, разделенными символом с кодом 31).

sendMessage – добавляет сообщение, переданное в параметре message, в очередь.

getMessages – возвращает все сообщения, еще не прочитанные пользователем. Если в необязательном параметре messages_to_get передано положительное число, возвращается указанное количество последних сообщений, даже если они уже были прочитаны пользователем.

getHighScores + setUserScore – используют глобальные переменные 16, 17 и 32 .. 32+max_scores-1 для организации глобальной таблицы рекордов, что удобно для приложений-игр.

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

getHighScores – возвращает текущую таблицу результатов в формате XML.

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

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

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

Как хранятся переменные, вызываемые методом getVariable?
Каждому экземпляру приложения доступно до 4096 переменных (0-4095), в каждой из которых можно хранить строку из не более чем 255 байтов. Для каждого приложения (идентифицируемого api_id) эти переменные уникальны. Переменные инициализируются пустой строкой.
Тип Номера Область
global_vars 0 – 1023 Зависят только от api_id.
Общие для всех экземпляров приложения.
user_vars 1024 – 2047 Зависят от api_id и user_id – id пользователя, запустившего приложение. У различных пользователей, запустивших данное приложение, будут свои копии этих переменных. Однако если один и тот же пользователь запустит сразу несколько копий одного и того же приложения, эти переменные у них будут общими.
session_vars 2048 – 3071 Зависят от api_id и session – целочисленного идентификатора сеанса (комнаты), передаваемого в параметре запроса session. Иначе говоря, в каждой комнате (сеансе) эти переменные свои. Один и тот же пользователь не может одновременно участвовать более чем в четырех сеансах. Пользователь считается подключившимся к сеансу, как только он совершил запрос с соответствующим параметром session.
instance_vars 3072 – 4095 Зависят от api_id, user_id и session.

Переменные делятся на те, что хранятся на сервере вечно и те, что хранятся во временной памяти и могут быть стерты по истечении часа. Все переменные 0-1535 – постоянные, 1536-4095 – временные.
Во временных переменных можно хранить до 4095 байтов.

Переменные с номерами 0-15, 1024-1039, 1280-1295, 2048-2063 зарезервированы.

Они всегда содержат следующие значения:
0 – unixtime на сервере
1280 – id текущего пользователя (только чтение)
1281 – имя текущего пользователя (только чтение)
2048 – номер текущего сеанса/комнаты (только чтение)
2049 – название текущего сеанса/комнаты (чтение и запись)

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

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

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

Какие параметры необязательны при составлении HTTP-запроса?
session – номер сеанса (целое число, по умолчанию 0). Полезен при создании чатов и многоигроковых игр.
test_mode – если этот параметр равен 1, разрешает тестовые запросы к данным приложения. При этом аутентификация не проводится и считается, что текущий пользователь – это автор приложения. Это позволяет тестировать приложение без загрузки его на сайт. По умолчанию 0.
format – xml или json. По умолчанию – xml.

Какие основные методы доступны для использования?
В данный момент существует 2 основных метода:
putVariable – помещает в переменную, номер которой задан в параметре key (0-4095), значение, переданное в параметре value (строка в utf-8, не более 255 байтов). Запрос:
_http://api.vkontakte.ru/api.php?
api_id=4&method=putVariable&key=239&value=hello&sig=133e840a3e4d55ff0e7982bc7bacbcfa
При успешном присваивании переменной сервер вернет пустой ответ <response/>, в случае ошибки будет возвращено ее описание. Обратите внимание, что коды ошибок не используются.

getVariable – возвращает значение переменной, номер которой задан в параметре key (0-4095).
Пример использования getVariable был дан выше.

getVariables – возвращает список значений диапазона переменных, заданного с помощью входных параметров key (номер первой переменной) и count (число переменных). Данный метод позволяет получить за один запрос до 32 переменных. Запрос:
_http://api.vkontakte.ru/api.php?
api_id=4&method=getVariables&key=239&count=16&sig=133e840a3e4d55ff0e7982bc7bacbcfa

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

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

Каким образом осуществляется взаимодействие между моим приложением и ВКонтакте?

Cтруктура взаимодействия:

HTTP-запрос (POST или GET) от приложения к http://api.vkontakte.ru/api.php
??
Ответ от http://api.vkontakte.ru/api.php для приложения в виде XML или JSON

Пример запроса:

http://api.vkontakte.ru/api.php?api_id=4&method=getVariable&key=0&sig=235b5ec2f4ed4b12c5ae3f36d309daee

Из чего состоит этот запрос:

api_id – идентификатор приложения, присваивается при создании.
method – метод, которому передается параметр key.
key – параметр, с которым вызывается method.

В данном случае API получает запрос getVariable(0) (”вернуть значение переменной под номером 0″)

sig – это подпись, которая создается в целях безопасности.
sig равен md5 от конкатенации следующих строк:

viewer_id – id текущего пользователя, переданный SWF посредством flashvars при инициализации.
пар “parameter_name=parameter_value”, расположенных в порядке возрастания имени параметра.
секрета приложения api_secret (секрет Вы можно менять при редактировании страницы приложения).

sig = md5(viewer_idname1=value1name2=value2secret)

В данном случае sig равен md5(”1015288api_id=4key=0method=getVariablesecret”) то есть 235b5ec2f4ed4b12c5ae3f36d309daee

Пример ответа:

<response>1205887037</response>

Ответ по умолчанию приходит в формате XML в кодировке UTF-8.
В данном случае ответ содержит значение переменной под номером 0, то есть 1205887037.

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

<error>Incorrect signature</error>

Какие параметры обязательны при составлении HTTP-запроса?

api_id, method и sig – обязательные параметры.

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