Итак, после того как вы изучите ActionScript, понять как использовать ВКонтакте API, будет уже не сложно и вы сможете использовать ВКонтакте API в своих приложениях.
Оболочкой для обмена данными является объект Flash. Возможность загрузить любое приложение в формате .swf разрешением не более 607x590. Flash-контейнер, то размер приложения не больше 607x4050 точками.
При отображении приложения посредством flashVars в него передаются следующие параметры:
api_url – это адрес сервиса API, по которому необходимо осуществлять запросы.
api_id – это id запущенного приложения.
user_id – это id пользователя, со страницы которого было запущено приложение. Если приложение запущено не со страницы пользователя, то значение равно 0.
group_id – это id группы, со страницы которой было запущено приложение. Если приложение запущено не со страницы группы, то значение равно 0.
viewer_id – это id пользователя, который просматривает приложение.
is_app_user – если пользователь установил приложение – 1, иначе – 0.
viewer_type – это тип пользователя, который просматривает приложение (возможные значения описаны ниже).
auth_key – это ключ, необходимый для авторизации пользователя на стороннем сервере (см. описание ниже).
language – это id языка пользователя, просматривающего приложение (см. список языков ниже).
api_result – это результат первого API-запроса, который выполняется при загрузке приложения (см. описание ниже).
api_settings – битовая маска настроек текущего пользователя в данном приложени (подробнее см. в описании метода getUserSettings).
Стандартное взаимодействие приложения с API ВКонтакте производится путем создания HTTP-запроса (POST или GET) к адресу API-сервиса http://api.vkontakte.ru/api.php или http://api.vk.com/api.php в зависимости от того, откуда запущено приложение. Этот адрес можно получить из flashVars или из параметров Flash-контейнера в зависимости от того, каким способом запускается приложение.
????: Форум партнерских программ http://affiliatetalk.ru/123-sozdanie-flash-prilozheniya-v-kontakte.html
Параметры необходимые передавать при запросе:
api_id - идентификатор приложения, присваивается при создании.
Method - название метода API из общего списка функций.
Sig - подпись, которая создается в целях безопасности. Порядок создания подписи описан ниже.
????: Форум партнерских программ http://affiliatetalk.ru/showthread.php?t=123
Параметр sig равен md5 от конкатенации следующих строк:
viewer_id – id текущего пользователя, переданный SWF посредством flashvars при инициализации.
пар "parameter_name=parameter_value", расположенных в порядке возрастания имени параметра (по алфавиту).
секрета приложения api_secret (секрет Вы можете менять при редактировании страницы приложения)
sig = md5(viewer_idname1=value1name2=value2secret)
Напоследок пример DataProvider в игре Тетрис:
Код:
import utils.MD5;
class Tetris.DataProvider {
var API_ID = "1";
var API_SECRET = "Tetris1secret";
var API_SERVER_URL = "http://api.vkontakte.ru/api.php";
var API_REQUEST_METHOD = "POST";
var API_TEST_MODE = false;
private var _viewer_id: Number;
private var _request_params: Array;
function DataProvider()
{
_request_params = new Array();
_request_params["api_id"] = API_ID;
_viewer_id = parseInt(_root.viewer_id);
if (API_TEST_MODE) {
_viewer_id = 6492;
_request_params["test_mode"] = "1";
}
}
/**
* Sends user's score
*
*/
public function sendScore(score:Number, onComplete:Function)
{
_sendRequest("setUserScore", {params:{score:score}, onComplete:onComplete});
}
/**
* Retreives users ratinf
*
*/
public function getUsersRating(onComplete:Function)
{
_sendRequest("getHighScores", {onComplete: onComplete})
}
/********************
* Private methods
********************/
/**
* Sends request to the server
*
*/
private function _sendRequest(method:String, options:Object)
{
var response:XML = new XML();
response.ignoreWhite = true;
if (options.onComplete);
response.onLoad = options.onComplete;
var request:LoadVars = new LoadVars();
var request_params:Object = {
method: method
};
for (var key in _request_params)
{
request_params[key] = _request_params[key];
}
for (var key in options.params)
{
request_params[key] = options.params[key];
}
request["sig"] = _generate_signature(request_params);
for (var key in request_params)
{
request[key] = request_params[key];
}
request.sendAndLoad(API_SERVER_URL, response, API_REQUEST_METHOD);
}
/**
* Sorts array by keys
*
*/
private function _sort_array_by_keys(aInput: Object)
{
var aTemp = new Array();
for (var sKey:String in aInput)
aTemp.push([sKey, aInput[sKey]]);
aTemp.sort(function () {
return arguments[0][0] < arguments[1][0]}
);
var aOutput = new Array();
for (var i:Number = aTemp.length - 1; i >= 0; i--)
{
aOutput[aTemp[i][0]] = aTemp[i][1];
}
return aOutput;
}
/**
* Generates request signature
*
*/
private function _generate_signature(request_params) {
var signature = "";
var sorted_array = _sort_array_by_keys(request_params);
// Note: make sure that the signature parameter is not already included in
// request_params array.
for (var key in sorted_array)
signature = key + "=" + sorted_array[key] + signature;
signature = _viewer_id + signature + API_SECRET;
return MD5.encrypt(signature);
}
}
Игру можно просмотреть
здесь и там же
скачать.
Более подробную информацию смотрите в
документации API ВКонтакте.