Вконтакте - Документация Api
Как это работает?
Вы можете загрузить любое приложение Adobe Flash формата .SWF и использовать API
ВКонтакте для хранения любых переменных и обмена информацией с серверами ВКонтакте.
Ваши приложения также смогут обращаться к любым другим серверам.
Для реализации большинства востребованных приложений (игры, чаты, тесты, системы IM)
достаточно обмена переменными с серверами ВКонтакте.
Какие переменные передаются SWF-файлу при включении его в HTML-код ВКонтакте?
Посредством flashvars передается 3 переменные:
- viewer_id – это id пользователя, который просматривает приложение.
- user_id – это id пользователя, со страницы которого было запущено приложение.
- group_id – это id группы, со страницы который было приложение.
Каким образом осуществляется взаимодействие между моим приложением и ВКонтакте?
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=b92b6a3b9d64f823ece6544425ffb75d
Из чего состоит этот запрос:
- 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(”35718api_id=4key=0method=getVariablesecret”) то есть b92b6a3b9d64f823ece6544425ffb75d
Пример ответа:
<response>1205887037</response>
Ответ по умолчанию приходит в формате XML в кодировке UTF-8.
В данном случае ответ содержит значение переменной под номером 0, то есть 1205887037.
Если же приходит сообщение об ошибке, то ответ мог бы выглядеть, например, следующим образом:
<error>Incorrect signature</error>
Какие параметры обязательны при составлении HTTP-запроса?
api_id, method и sig – обязательные параметры.
Какие параметры необязательны при составлении 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=0d688aed97de57427f3fbfaa1e641ea0
При успешном присваивании переменной сервер вернет пустой ответ <response/>, в случае ошибки будет возвращено ее описание. Обратите внимание, что коды ошибок не используются.
getVariable - возвращает значение переменной, номер которой задан в параметре key (0-4095).
Пример использования getVariable был дан выше.
Как хранятся переменные, вызываемые методом 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.
Какие еще методы существуют?
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. При этом новый результат добавляется в таблицу, а если она уже заполнена – вытесняет наименьший из имеющихся, если он меньше добавляемого.
Существуют ли примеры исходных кодов приложений?
Мы подготовили для Вас исходные коды двух базовых приложений:
- – пример реализации чата для пользователей ВКонтакте.
- – пример реализации игры, записывающей рейтинг.
Смогут ли злоумышленники декомпилировать мой SWF-код?
Теоретически можно декомпилировать все, что угодно. Однако Вы можете усложнить эти процессы путем обфускации. Вы также можете использовать собственные серверные мощности, чтобы усложнить верификацию. Мы рекомендуем создавать такие приложения, которые бессмысленно декомпилировать или взламывать.
Что будет дальше?
Данная версия API – первоначальная, но уже она позволит реализовать практически все востребованные приложения. В будущем будет введен универсальный метод Execute, который потенциально сможет заменить все остальные методы и даст еще больше возможностей разработчику. Кроме того, ничего не мешает в будущем использовать API вне Flash-приложений.
В то же время, мы не рекомендуем ждать момента расширения платформы. Уже нынешние возможности ограничены только Вашим желанием создавать интересные приложения, которые смогут использовать миллионы людей.
Взято с http://vsociale.ru/vkontakte/37
Метки записи: API, веб 2.0, вконтакте, дополнения, плагины, сервисы, скрипты, социальные сети, фишки
16 июля 2008 в 20:58
Help!!!! На работе отключили контакт… можно как нибудь обойти запрет? Подскажите…пли-и-з…
30 апреля 2009 в 17:17
Уебан блять, налепи свои баннеры себе на ебало, дятел галимый.
6 марта 2010 в 18:49
.
Полезно знатьhttp://tourequip.ru/record-41.html
6 апреля 2010 в 2:41
.
Премьера кинофильма:скачать фильм 22 пули / L’immortel онлайн