Как создавать социальные приложения для Mail.Ru

Социальная сеть Мой Мир@Mail.Ru позволяет размещать внутри себя социальные приложения. Такие приложения имеют доступ к данным пользователей сети и каналам распространения в ней. За счет этого социальные приложения добились высокой популярности среди пользователей.

Как разработать социальное приложение

Чтобы создать и запустить социальное приложение надо пройти несколько шагов:

Разместить свое приложение может любой пользователь Моего Мира, но для монетизации есть некоторые ограничения. Подробности см. в руководстве по подключению биллинга.

Помните, все приложения, размещенные на Платформе, должны удовлетворять правилам размещения приложений. Вы можете разрабатывать приложение без общения с модераторами, в этом режиме оно доступно только вам и указанным вами тестерам. При подаче запроса на публикацию приложение в обязательном порядке модерируется.

Архитектура приложения

Социальное приложение размещается в iframe внутри страницы Моего Мира — канвы (пример). Это означает, что технически процесс создания приложения мало чем отличается от создания веб-сайта.

Обычно приложение имеет две части: клиентскую и серверную. Клиентская часть отображается пользователю и может быт сделана на всем, что умеет отображать браузер, например, Flash, Silverlight, Unity 3D или просто HTML+JavaScript.

Серверная часть может быть разработана на любой технологии, которая может возвращать HTML для клиентской части. Обычно серверная часть нужна для хранения данных, например, рейтингов игроков и для приема платежей при работе с биллингом.

Платформа поддерживает два типа приложений: iframe и flash. Iframe — общий тип, который позволяет вам использовать любые технологии. Тип flash облегчает работу если клиентская часть вашего приложения написана на Flash, либо у вашего приложения нет своего хостинга.

Мы рекомендуем вам всегда выбирать тип iframe, в том числе и если у вас Flash-приложение, потому что он предоставляет больше возможностей, например, публикацию новостей под приложением. Кроме того, тип flash объявлен устаревшим и в дальнейшем будет выключен — все приложения, Flash- и другие, будут вставляться через тип iframe.

Инициализация приложения

Когда пользователь открывает ваше приложение в Моем Мире, ему отображается страница с iframe’ом, указывающим на ваши сервера (адрес вы задаете в настройках приложения). Чтобы вы могли использовать API Платформы, в GET-парметрах iframe’а передаются также дополнительные данные (для приложений типа flash аналогичные данные передаются автоматически через FlashVars).

Параметры инициализации приложения

Все указанные параметры передаются при каждом открытии страницы приложения.

Параметры

Имя Тип Описание
app_idintидентификатор вашего приложения
session_keystringидентификатор сессии
session_expiretimestampвремя в формате unixtime когда сессия перестанет быть валидной
oiduint64идентификатор пользователя, установившего приложение
viduint64идентификатор пользователя, запустившего приложение
is_app_userboolфлаг, обозначающий установил ли приложение пользователь просматривающий приложение (1 — установил, иначе 0)
ext_permstringпользовательские настройки приложения; значением данного параметра является перечисление через запятую настроек пользователя, описанных в документации к методу users.hasAppPermissionrest; например: ext_perm=stream,notifications
window_idstringидентификатор окна, в котором запущено приложение
viewstringопределяет место, из которого открыто приложение
referer_typestringопределяет тип реферера (см. Бонус за друга); необязательный параметр
referer_idstringопределяет id реферера (см. Бонус за друга); необязательный параметр
sigstringподпись параметров

Идентификатор сессии session_key используется для вызовов REST API. Подробности читайте в руководстве по использованию REST API. Параметр vid всегда содержит идентификатор текущего пользователя приложения. Параметр oid зависит от способа запуска приложения: пользователь мог запустить приложение со своей личной страницы, тогда oid будет идентичен vid. Если пользователь зашел на приложение со страницы другого человека, установившего его, то oid будет содержать идентификатор установившего приложение пользователя. Параметр window_id используется только для вызова функции payments.openDialogrest. Параметр view для приложений в Моем Мире всегда равен app_canvas. Параметр sig является подписью параметров инициализации приложения. Мы настоятельно рекомендуем вам проверять подпись параметров дабы избежать их подделки злоумышленниками. Расчет подписи происходит по схеме сервер-сервер REST API.

Например:
Формула расчета подписи: sig = md5(params+secret_key)
Пусть ваш secret_key=f3e22b08e8953cbe6bad349cb65adf76

Адрес iframe'а (адрес вашего приложения с параметрами инициализации): 
https://example.com/?is_app_user=1&session_key=f3ecde35e0bccb4dd21c2b54eab2820b&vid=1324730981306483817&oid=1324730981306483817&app_id=476416&authentication_key=5d1318dc1dddf7a4d3ba9a1b8e10ed77&session_expire=1284481070&ext_perm=&sig=e0f0740a115e55a640f1081c6942a965&window_id=CometName_94cee89bee9144716e2ff5816a679eca

Тогда:
params = app_id=476416authentication_key=5d1318dc1dddf7a4d3ba9a1b8e10ed77ext_perm=is_app_user=1oid=1324730981306483817session_expire=1284481070session_key=f3ecde35e0bccb4dd21c2b54eab2820bvid=1324730981306483817window_id=CometName_94cee89bee9144716e2ff5816a679eca
sig = md5(app_id=476416authentication_key=5d1318dc1dddf7a4d3ba9a1b8e10ed77ext_perm=is_app_user=1oid=1324730981306483817session_expire=1284481070session_key=f3ecde35e0bccb4dd21c2b54eab2820bvid=1324730981306483817window_id=CometName_94cee89bee9144716e2ff5816a679ecaf3e22b08e8953cbe6bad349cb65adf76)
    = e0f0740a115e55a640f1081c6942a965
Расчитанная подпись совпала с параметром sig. 

Обратите внимание, что параметр sig в расчете подписи не участвует. Так как подпись содержит секретный ключ secret_key, то ее можно проверить только на сервере. Параметры state и authentication_key объявлены устаревшими и оставлены для обратной совместимости.

Как разрабатывать приложение

Используя параметры, переданные при инициализации приложения, вы можете обращаться ко всем API, предоставляемым Платформой. Для разработки клиентской части приложения рекомендуем вам использовать JS API и Flash-библиотеку если у вас Flash-приложения, так как это существенно облегчает разработку. Для взаимодействия ваших серверов с серверами Платформы используйте REST API, которое можно использовать из любых языков программирования.

Что делать дальше

Вы можете зарабатывать деньги на вашем социальном приложении. Для этого ознакомьтесь с руководством по монетизации.

Для продвижения вашего нового приложения используйте возможности рекламы в Моем Мире.

Технологии

Дополнительно