Автор работы: Пользователь скрыл имя, 18 Октября 2013 в 10:48, курсовая работа
Сервис Вконтакте предоставляет механизм взаимодействия с внешними клиентскими приложениями. Любой пользователь может свободно создавать приложения, которые могут совершать требуемые действия с данными пользователей и групп. Для этого разработан Application programming interface (API), который достаточно прост и предоставляет все необходимые инструменты для операций с данными. В данной курсовой работе будет проведен разбор этого механизма.
Введение…………………………………………………………………………………… 3
API. Теоретические аспекты………………………………………………… 4
Специфика реализации Open API Вконтакте…………………………… 5
Описание методов Open API ………………………………………………… 8
Приложения Вконтакте……………………………………………………… 15
4.1. Flash-приложения ……………………………………………………………… 15
4.2. IFrame-приложения …………………………………………………………… 21
5. Standalone-desktop приложения для API Вконтакте ………………………… 25
Заключение ……………………………………………………………………………… 27
Список использованной литературы ……………………………………………….28
Ниже представлены несколько примеров
использования описанных
VK.Auth.login(function(
if (response.session) {
/* Пользователь успешно авторизовался */
if (response.settings) {
/* Выбранные
настройки доступа
}
} else {
/* Пользователь нажал кнопку Отмена в окне авторизации */
}
});
VK.Auth.getLoginStatus(
if (response.session) {
/* Авторизованный в Open API пользователь */
} else {
/* Неавторизованный в Open API пользователь */
}
});
Авторизации на удаленной стороне
Для того, чтобы Вы могли проверить,
что пользователь действительно авторизовался
через платформу Open API, в сессионных данных
передается параметр sig. Он служит
цифровой подписью данных. После авторизации,
сессионные данные записываются в cookie
с именем vk_app_<APP_ID>, где <APP_ID> - это
идентификатор Вашего приложения. Данные
записаны в виде пар parameter_name=parameter_
expire=1271238742&mid=100172&
Параметр sig равен md5 от конкатенации
следующих строк:
В данном случае значение sig будет вычислено как md5-хеш от следующей строки:
expire=1271238742mid=
4f 60a26FF1PUlZfEyutJxctvtd
Ниже представлен пример кода на
языке PHP, который может быть использован
для авторизации пользователя Open
API на удаленной стороне:
function authOpenAPIMember() {
$session = array();
$member = FALSE;
$valid_keys = array('expire', 'mid', 'secret', 'sid', 'sig');
$app_cookie = $_COOKIE['vk_app_'.APP_ID];
if ($app_cookie) {
$session_data = explode ('&', $app_cookie, 10);
foreach ($session_data as $pair) {
list($key, $value) = explode('=', $pair, 2);
if (empty($key) || empty($value) || !in_array($key, $valid_keys)) {
continue;
}
$session[$key] = $value;
}
foreach ($valid_keys as $key) {
if (!isset($session[$key])) return $member;
}
ksort($session);
$sign = '';
foreach ($session as $key => $value) {
if ($key != 'sig') {
$sign .= ($key.'='.$value);
}
}
$sign .= APP_SHARED_SECRET;
$sign = md5($sign);
if ($session['sig'] == $sign && $session['expire'] > time()) {
$member = array(
'id' => intval($session['mid']),
'secret' => $session['secret'],
'sid' => $session['sid']
);
}
}
return $member;
}
$member = authOpenAPIMember();
if($member !== FALSE) {
/* Пользователь авторизирован в Open API */
} else {
/* Пользователь не авторизирован в Open API */
}
В данном примере константы имеют следующие
значения:
VK.Api
Для взаимодействия с Flash API ВКонтакте используются методы объекта VK.Api. В таблице ниже представлен список доступных методов.
Название метода |
Параметры |
Описание |
call |
method: String |
Вызывает метод, переданный в параметре method, c аргументами, переданными в объекте params. Ответ API-сервера ВКонтакте возвращается в качестве аргумента в вызове функции указанной в параметре callback. |
Ниже представлен пример вызова
метода getVariable, через Open API:
VK.Api.call('getVariable', {key: 1281}, function(r) {
if(r.response) {
alert('Привет, ' + r.response);
}
});
VK.Observer
Для реакции на события, возникающие
в процессе работы платформы Open API, Вы можете
использовать методы наблюдения за событиями,
предоставлямые объектом VK.Observer.
Ниже представлены типы событий, на получение
которых Вы можете подписаться.
Событие |
Описание |
auth.login |
Возникает при авторизации пользователя с помощью метода VK.Auth.login |
auth.logout |
Возникает при выходе пользователя с помощью метода VK.Auth.logout |
auth.statusChange |
Возникает при изменении статуса пользователя |
auth.sessionChange |
Возникает при изменении любых данных, связанных с авторизацией пользователя |
Для работы с данными типами событий
используются методы описанные ниже:
Название метода |
Параметры |
Описание |
subscribe |
event: String |
Добавляет функцию, переданную в параметре handler, в список получателей события, которое указано в параметре event. |
unsubscribe |
event: String |
Удаляет функцию, переданную в параметре handler, из списка получателей события, которое указано в параметре event. Если параметр handler не задан, то удаляются все обработчики события, указанного в параметре event. |
VK.UI
Объект VK.UI содержит в себе различные методы связанные с интерфейсом. Ниже представлен список доступных на данный момент методов.
Название метода |
Параметры |
Описание |
button |
box_id: String |
Создает стилизованную кнопку “Войти ВКонтакте” внутри контейнера c id заданным через параметр box_id. |
Вы можете создать любое приложение и использовать API ВКонтакте для доступа и обмена информацией с серверами ВКонтакте. Вы можете использовать любое количество собственных серверов и любыми средствами монетизировать собственные приложения.
Обновленная версия API дает разработчикам сотни новых возможностей и позволяет создавать интересные, интерактивные и популярные приложения.
Существует два типа
1) Flash приложения.
В качестве оболочки для обмена данными
используется объект Flash. Вы можете загрузить
любое приложение в формате .SWF размером
не более 807x730 точек. Если используется
Flash-контейнер, то размер приложения ограничен
807x4050 точками. Также можно отключить поля
и элементы управления приложением, тогда
размер приложения может быть увеличен до
2) IFrame приложения.
Внутри страницы приложения открывается
IFrame, содержащий страницу, расположенную
на стороннем сервере, в таком случае приложение
может использовать любые технологии,
поддерживаемые браузером, и обмениваться
данными с ВКонтакте используя JavaScript.
Вы можете менять размер приложения как
в Настройках, так и динамически через
JS API.
Возможности APIConnection
На текущий момент APIConnection предоставляет следующие возможности:
Как использовать APIConnection?
APIConnection может быть использован
любым приложением с отключенным Flash-контейнером.
Для этого на странице редактирования
приложения необходимо выбрать пункт
"Без использования контейнера" в
соответствующей графе.
Для начала работы с APIConnection подключите
к Вашему проекту класс vk.APIConnection, доступный
в архиве APIConnection.zip, и создайте экземпляр
этого класса. Единственным параметром
его конструктора является объект flashVars.
Пример кода инициализации приложения
var flashVars: Object = stage.loaderInfo.parameters
as Object;
var VK: APIConnection = new APIConnection(flashVars);
Для тестирования приложения и осуществления
запросов к API на локальной машине Вы можете
дополнить flashVars временными значениями:
if (!flashVars.api_id) {
// -- For local testing enter you test-code here:
flashVars['api_id'] = 1888171;
flashVars['viewer_id'] = 66748;
flashVars['sid'] = "
flashVars['secret'] = "6113n3e4g3";
// -- //
}
Все дальнейшие действия будут выполняться
с объектом VK.
Вызовы JS API
Для осуществления внешних
вызовов необходимо использовать функцию
объекта VK - VK.callMethod(methodName: String, param1, param2
...). В таблице ниже приведен список доступных функций.
Список методов Javascript API »
Обращение к ВКонтакте API
Для обращения к ВКонтакте API необходимо использовать функцию объекта VK - VK.api(methodName: String, params: Object, [onComplete: Function, OnError: Function]).
Также Вы можете обращаться к API стандартными средствами, составляя запрос по следующей схеме.
Обработка событий
По мере совершения пользователем
действий на странице с приложением,
объект VK создает события, которые можно
отслеживать и обрабатывать функцией
addEventListener. В таблице ниже представлен
список создаваемых событий.
Каждое событие имеет поле params, содержащее
в себе передаваемые параметры.
Название события |
Параметры |
Описание |
onApplicationAdded |
– |
Событие происходит, когда пользователь добавляет приложение к себе на страницу. |
onSettingsChanged |
settings: Number |
Событие происходит, когда пользователь изменяет настройки приложения. Параметр settings передаваемого объекта в функцию обратного вызова содержит в себе битовую маску выставленных значений настроек. Подробнее о настройках приложения в описании метода getUserSettings. |
onBalanceChanged |
balance: Number |
Событие происходит, когда пользователь пополняет или снимает голоса с баланса приложения. Параметр balance содержит текущий баланс пользователя в сотых долях голоса. Этот параметр можно использовать только для вывода пользователю. Достоверность баланса всегда нужно проверять с помощью метода secure.getBalance. |
onOrderCancel |
– |
Событие происходит, когда пользователь отменяет покупку. |
onOrderSuccess |
orderId: Int |
Событие происходит, когда покупка закончилась успешно. |
onOrderFail |
– |
Событие происходит, когда покупка закончилась неуспешно. |
onWindowBlur |
– |
Событие происходит, когда окно с приложением теряет фокус. Например, когда пользователь открывает окно с настройками приложения. |
onWindowFocus |
– |
Событие происходит, когда окно с приложением получает фокус. Например, когда пользователь закрывает окно с настройками. |
Пример кода обработки события:
apiConnection.
function onSettingsChanged(e: CustomEvent): void {
var settings: uint = e.params[0];
// do something
}