Всем доброго дня!
Недавно опубликовал своё приложение во Vkontakte.ru, которое было успешно принято в каталог образовательных приложений. Не хватает сообщений чтобы написать в блок, по этому решил поделиться опытом на форуме.
Приложение писал на php + mysqli + js для обращений к VK.API.
Идея приложения
Идеей приложения является повышение кулинарных навыков аудитории путем прохождения простых тестов с элементами юмора.
Приложение было задумано как вееральное, т.е. по прохождении каждого теста, пользователю предлагается похвастаться результатами прохождения друзьям.
Кстати, уже на этом шаге есть небольшие проблемы, связанные с ограничениями vkontakte (об этом напишу ниже).
Первые шаги разработчика приложений
Основные проблемы, которые возникли (и кстати говоря, как оказалось - не у одного меня) связаны с не точностью описания методов api. Данную проблему можно решить только перебором и тестовым отправлением запросов к серверу api.
Из опыта перебора скажу, что нужно в предоставляемом файле - обертке к api закомментировать строку:PHP код:Как оказалось временную метку передавать в запросе не нужно.
$params['timestamp'] = time();
Следующие подводные камни были вызваны тем, что ранее я не имел достаточного опыта работы с JS, по этому в статье их описывать не стоит...
Архитектурные решения
На начало разработки приложения у меня было смутное представление о работе с VK.API, и официальная документация не описывает всех необходимых подробностей взаимодействий.
Авторизация пользователей в приложении
При посещении пользователем приложения (первый вход, обновление страницы приложения) методом GET передаются авторизационные данные пользователя (viewer_id - идентификатор пользователя, по нему можно вычислить страницу профиля пользователя - http://vkontakte.ru/id{viewer_id}, auth_key - строка, при помощи которой осуществляется авторизация, она должна быть равнаPHP код:где viewer_id нам уже известен, а api_id и secret_key - выдаются при регистрации приложения).
md5($api_id."_".$viewer_id."_".$secret_key)
После того, как авторизация пользователя успешно произведена - можно запросить метод getProfiles и сохранить в базе приложения данные о пользователе (я сохраняю эти данные для вывода блока "Наши кулинары")
При последующих авторизациях пользователя так же запрашиваю getProfiles с целью обновления информации (у пользователя может измениться аватар, имя и прочие данные).
Организация тестирования
За тестирование отвечают 3 таблицы в базе (думаю не стоит останавливаться на них очень подробно):
1) Тесты. В таблице сохраняется информация о тестах, количестве вопросов в тесте и прочая вспомогательная информация;
2) Вопросы. В таблице хранятся вопросы и варианты ответов по всем тестам, сопоставляются с тестом по id теста.
3) Статусы. По факту прохождения теста в таблицу заносится id пользователя (внешний id - viewer_id), статус прохождения (начал проходить не не дошел до конца, прошел с ошибками, прошел без ошибок) - на основе этого статуса в конце теста выводится уведомление о прохождении теста (с ошибками или без), так же на основе статуса подбираются тесты для вывода пользователю (пройденные не выводятся), и есть идеи в будущем развивать приложение опять же на основе этих статусов (считать пользователю уровень, и в зависимости от уровня добавлять различные "плюшки").
Вееральная составляющая
Как и написано выше, по факту прохождения теста пользователю выводится предложение похвастаться результатом. По клику на кнопку вызывается метод friends.get - при помощи которого приложение получает список друзей пользователя (но не более 1000, но думаю этого более чем достаточно). Далее id первого друга + текст сообщения + attachments (фотография) передаются методу wall.post. Основная проблема этой схемы в vkontakte - запрос подтверждения при каждом размещении записи (т.е. нельзя разместить записи у всех друзей сразу, нужно спрашивать подтверждение по каждому другу, в этом и заключается основное отличие от api facebook). И из-за этого ограничения пришлось реализовывать генерацию json строк с следующим id друга, и асинхронно запрашивать их по факту размещения предыдущей записи.
Ещё считаю нужным заметить, что в вееральной составляющей был реализован механизм защиты от повторной отправки сообщения одному и тому же пользователю на стену. Т.е. при формирования json строки, id проверяется в соответствующей таблице, и если в течении последних 24 часов из приложения данному пользователю отправлялся пост на стену, то запрашивается следующий id, и так до момента, пока не найдется пользователь, которому пост ещё не отправлялся...
Вместо заключения
В настоящее время ведется работа над вторым релизом приложения. Буду рад комментариям, замечаниям, предложениям...
Линк на приложение: http://vkontakte.ru/app2660899
- 06.01.2012 17:33
- Регистрация: 02.11.2011
- Сообщений: 6
- Репутация: 2
- 07.01.2012 22:05
- Регистрация: 02.08.2011
- Сообщений: 126
- Репутация: 4
У меня тоже есть как мне кажется хорошая тема для создание приложения.
Вот только не умею программировать... Когда пробовал создать приложения через adobe flash, но ничего не получилось и за большого количества ошибок. - 07.01.2012 22:13
Не плохо вышло:) я только сайты на флеше делал, вполне забавно выходило, но было это давноооо))
- 08.01.2012 04:37
Не плохо сделано. Очень интересно реализована отправка сообщений друзьям о своем результате
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Вконтакте | Рассылка приглашений в группу, на встречу , Приложения | Социальные сети | 21 | 10.11.2011 02:43 |
Приложения для Iphone и Ipad, Ipod для Вебмастеров | Софт, скрипты, лицензии | 0 | 09.07.2011 01:36 |
Вконтакте | Рассылка приглашений в группу, на встречу , Приложения | Услуги по SMM, SMO | 18 | 25.01.2011 16:27 |
Вконтакте | Рассылка приглашений в группу,Встречу,Приложения | Прочее | 1 | 04.01.2011 21:26 |
Интересные темы
вывод данных с таблицы wordpress
Не знаешь как сделать вывод данных из нужных полей с таблицы для wordpress, читай здесь.
как добавить в друзья в контакте
Какие существуют программы для того, чтобы добавить в друзья в контакте на автомате.
как сделать ссылку на человека в статусе в контакте
Вся необходимая информация о том, как сделать ссылку на человека в статусе в контакте, читай далее.