..
 Соглашение
 
 Об ошибках сюда
  Сортировка новостей по :
 » Комментариям | дате | рейтингу | Просмотрам

Главная » 2010 » Ноябрь » 18 » Создаем vkontakte IFrame-приложение
10:24
Создаем vkontakte IFrame-приложение

Одно время было непонятное стремление создать приложение для контакта, но необходимость изучения flash технологий напрочь отбивало это желание. И вот Вконтакте соблаговолил простым смертным создавать IFrame приложения, то есть можно создать приложение на PHP, используя api контакта, и разместить это приложение на своем сервере, и оно будет подгружаться в контакт при помощи IFrame технологии.
Сейчас я попытаюсь объяснить основы, которых должно хватить для создания более сложных и полноценных приложений.

Первое, что надо следать — это пройти на страницу: vkontakte.ru/apps.php?act=add
fix
fix
И начать создавать приложение, с заполнением формы, надеюсь, Вы справитесь, если не справились, то жмем крестик в правом верхнем углю экрана монитора.
Далее мы видим страницу с более тонкими настройками:
fix
fix
Жмем кнопку, которая отмечана на рисунке цифрой 1 — IFrame. В верней части появится поле номер 2, именно в него необходимо внести стартовую страницу приложения, у меня это было: "gvozd.org/index.php".
Затем переходим к пункту 3 и включаем наше приложение (выбираем из выпадающего списка). Жмем кнопку «Редактировать», отмечена цифрой 4.

В верхнем меню выбираем пунк "Платежи":
fix

fix
Жмем кнопку "Включить систему платежей"
fix

fix
Система платежей включена.

Для теста работоспособности на странице "gvozd.org/index.php" размещаем надпись "Эта страница расположена на домене gvozd.org". Открываем страницу с приложением:
fix

fix
Если видим сообщение, которое мы оставили на странице, то все отлично, все работает.

Далее следует обратить внимание, что контакт добавляет ряд переменных (в php их можно словить через массив $_GET) к загружаемой в iframe странице.

Полный запрос выглядел так:
http://gvozd.org/index.php?api_url=http://api.vkontakte.ru/api.php&api_id=1828067&api_settings=1&
viewer_id
=19998&viewer_type=0&user_id=0&group_id=0&is_app_user=1&
auth_key
=ec6d4bb6d6838e80e39273b78aede757&language=0&parent_language=0&lc_name=deab711a

Этот запрос мы будем использовать как авторизацию, благодаря наличию auth_key (специальный и очень важный ключ). Он формируется так: auth_key = md5(api_id + '_' + viewer_id + '_' + api_secret).
Для данного запроса auth_key будет расчитываться так: md5(«1828067_19998_lVM6Z6sL0zDczCBDOdzB») и будет равен ec6d4bb6d6838e80e39273b78aede757. Единственную переменную api_secret мы не получаем со стороны сервера, а берем со страницы «Платежи», эту функцию мы активировали ранее. auth_key это единственная переменная, которую пользовательне НЕ может подделать сам не зная api_secret.

То есть, если md5(api_id + '_' + viewer_id + '_' + api_secret) == auth_key (аналогично, логин соответствует паролю), то можно спокойно заносить данного пользователя в свою базу на сервере и начинать с ним работать через механизм сессии.

Более конкретно со значением других переменных можно ознакомиться здесь: vkontakte.ru/pages.php?id=2369267 — но помним, что их можно подделать, поэтому относимся к ним с недоверием.

Работать с api контакта со стороны другого сервера можно только с secure методами, озакомися с ними на странице, в разделе "Методы, требующие наличия стороннего сервера".
vkontakte.ru/pages.php?o=-1&p=Описание%20методов%20API
Для примера реализации запроса будем использовать secure.getAppBalance метод, который должен показать баланс приложения, то есть количество голосов, которое кто-то перевел на приложение.
На странице описания данного метода ( vkontakte.ru/pages.php?o=-1&p=secure.getAppBalance ) показано постоение get-запроса к api контакта.
Основной проблемой является формирование подписи, благодоря которой доступ к информации получит только лицо, знающее api_secret (на странице с платежами).
Подпись формируется при помощи md5: sig = md5(name1=value1name2=value2api_secret), то есть для запроса
http://api.vkontakte.ru/api.php?api_id=4&v=2.0&method=secure.getAppBalance&
timestamp
=1238714241&random=83962759&
sig
=7598d64720bb39544679f2ca256fa538

Подпись будет:
md5("api_id=4method=secure.getAppBalancerandom=83962759timestamp=1238714241v=2.0api_secret"),
то есть 7598d64720bb39544679f2ca256fa538

Согласно рекомендациям мануала( vkontakte.ru/pages.php?o=-1&p=Защищенное%20взаимодействие%20приложения%20с%20API ) был написан следующий код и размещен на странице которая загружалась через iframe:

$api_id
= 1828067;
$method
= "secure.getAppBalance";
$random
= rand(10000,99999);
$timestamp
= time();
$v
= "2.0";
$api_secret
= "lVM6Z6sL0zDczCBDOdzB";
$sig
=md5("api_id=".$api_id."method=".$method."random=".$random."timestamp=".$timestamp."v=".$v.$api_secret);
print file_get_contents("http://api.vkontakte.ru/api.php?api_id=".$api_id."&v=".$v."&method=".$method."×tamp=".$timestamp."&random=".$random."&sig=".$sig);
?>


fix

Баланс данного приложения равен нулю, что и не удивительно)
Затем было принято решение бросить один голос на баланс приложения, что бы протестировать окончательно:
fix


fix

Перегрузили страницу с приложением:
fix


fix

Баланс приложения обновился (100 — значит 1 голос), значит запрос прошел успешно.

Общий алгоритм работы приложения:
1) авторизация при помощи auth_key.
2) начало сессии.
3) выборка значений из базы (либо регистрация нового пользователя).
4) какие-либо действия пользователя.
5) общение с api контакта через secure методы.


Категория: Секреты ВКонтакте | Просмотров: 5072 | Добавил: grafin | Рейтинг: 0.0/0
Всего комментариев: 5
5 JrattSpatt  
0
Ну как, определились, кто где будет новый год встречать?

4 zazula  
0
Строительство

3 seistarcete  
0
[url=http://azone.if.ua]Samsung D DuoS
[/url]

2 bulanovandrej  
0
http://www.vsozial.ru - всё о самых популярных сайтах. социальные сети, поисковики, видеопорталы + собственная сеть.

1 gt8664c  
0
Пакет программ для работы с vkontakte.ru и odnoklassniki.ru
- Работа с изображениями,
- Загрузка аудио и видео,
- Агент,
- Перевод изображений в символы,
- Интересные и полезные советы.
А так-же многое другое.

http://vip-file.com/download/15216.1d2ba823398f72ff241bf6f670e7/BestPack_v_4.4.html


Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

 © 2010 «1vKontakte»
 Внимание ! Все что опубликовано на сайте, не является взломом сайта "В контакте". Это лишь недочеты приватности данных !    Соглашение
 1VKontakte , Вконтакте , VKontakte , Дуров , В контакте  , Секреты ВКонтакте