Подключение авторизации сайта к каталогу игр Webtomat Данное руководство предназначено для подключения к каталогу игр Webtomat собственную систему авторизации пользователей через подключаемый сайт, что позволит более тесно интегрировать каталог с сайтом. Порядок подключения сайта Для подключения авторизации сайта сначала необходимо сделать запрос в тех.поддержку через тикет-систему. После одобрения, в разделе Редактирование площадки появятся Дополнительные параметры: 1. URL API сайта (REST API) 2. URL авторизации 3. Ваш секретный ключ Необходимые методы API, а также работа скрипта авторизации описаны в данном руководстве в соответствующих разделах. После создания API, настройки авторизации, можно протестировать работу, разместив любую игру у себя на сайте. 1. REST API API сайта включает в себя следующие методы: 1. getAppFriends - позволяет получить список друзей пользователя. Название параметра Обязательный Описание Идентификатор пользователя, у которого требуется получить список друзей. По умолчанию принимает значение текущего пользователя uid Пример запроса http://yoursite.com/api.php?method=getAppFriends&api_id=786&user_id=2296285&access_token=2164a69d64 bdc700f9525711f6e7b905 Пример результата <?xml version="1.0" encoding="UTF-8"?> < response > <uid>123</uid> <uid>124</uid> <uid>125</uid> </response> 2. getProfiles - позволяет получить информацию о пользователе на сайте. Название параметра Обязательный Описание uids да Перечисленные через запятую идентификаторы пользователей, не более 100 Пример запроса http://yoursite.com/api.php?method=getProfiles&api_id=786&user_id=2296285&uids=123,124,125&access_toke n=2164a69d64bdc700f9525711f6e7b905 Пример результата <?xml version="1.0" encoding="UTF-8"?> < response > <user> <uid>123</uid> <first_name>Вася</first_name> <last_name> Пупкин </last_name> <photo>http://yoursite.com/img/1.jpg</photo> <photo_big>http://yoursite.com/img/1.jpg</photo> <sex>2</sex> <bdate>1988-06-22</bdate> <profile>http://yoursite.com/profile/id123</profile> </user> <user> <uid>124</uid> <first_name>Алёна</first_name> <last_name>Иванова</last_name> <photo>http://yoursite.com/img/1.jpg</photo> <photo_big>http://yoursite.com/img/1.jpg</photo> <sex>1</sex> <bdate>1988-08-06</bdate> <profile>http://yoursite.com/profile/id124</profile> </user> <user> <uid>125</uid> <first_name>НЛО</first_name> <last_name>Внеземное</last_name> <photo>http://yoursite.com/img/1.jpg</photo> <photo_big>http://yoursite.com/img/1.jpg</photo> <sex>0</sex> <bdate>1988-08-06</bdate> <profile>http://yoursite.com/profile/id125</profile> </user> </response> 3. wallPost – отправляет сообщение на стену/ленту активности пользователю. Название параметра Обязательный Описание uid да Идентификатор пользователя, которому отправляется сообщение message да Сообщение, которое получит пользователь, в кодировке utf-8 Пример запроса http://yoursite.com/api.php?method=wallPost&api_id=786&user_id=2296285&uid=123&message=test_message &access_token=2164a69d64bdc700f9525711f6e7b905 В ответ на полученный запрос сайт должен оставить сообщение на стене пользователя. Выполнение запросов к API Для того чтобы вызвать метод API сайта, клиент осуществляет POST запрос на указанный URL API сайта: http://yoursite.com/api.php?method=METHOD&api_id=API_ID&user_id= UID&PARAMETERS&access_token=ACCESS_TOKEN ,где METHOD – название метода из списка методов REST API API_ID – идентификатор приложения, из которого осуществляется запрос UID – идентификатор пользователя, который осуществляет запрос PARAMETERS – параметры соответствующего метода ACCESS_TOKEN – ключ доступа, уникальный для каждого пользователя Пример запроса http://yoursite.com/api.php?method=getProfiles&api_id=786&user_id=2296285&uids=123,124,125&access_toke n=2164a69d64bdc700f9525711f6e7b905 АPI сайта обязан проверять access_token на валидность. Ключ формируется следующим образом: access_token = md5(api_id+user_id+secret_key) , где secret_key – секретный ключ Вашей площадки. Его можно получить в редактировании площадки. Пример //uid=123456 //api_id=786 //secret_key=a7365a399f9015050c6eda0905b6a7fd access_token = md5("786123456a7365a399f9015050c6eda0905b6a7fd") = 2680bb809d73f5ee3e8ee9d71b41c1d5 В случае если пользователь не авторизован 2. АВТОРИЗАЦИЯ Для интеграции механизма авторизации пользователя в играх необходимо добавить на страницу с игрой следующий код: <script type=”text/javascript” src=”http://static.apitech.ru/webtomat/api/api.js”> </script> <script type=”text/javascript”> tomatAPI.init({ webId : 1, //идентификатор Вашей площадки в системе вебтомат login : loginFunction, //функция, которая будет вызываться при попытке авторизации logout : logoutFunction, // функция, которая будет вызываться при деавторизации uid : 123456, // идентификатор пользователя на сайте token : "2680bb809d73f5ee3e8ee9d71b41c1d5" }); </script> Авторизация пользователя Нужно добавить, что вызов tomatAPI.init нужно делать при открытии игры каждый раз, а не единожды при загрузке (актуально для динамической загрузки игр) Возможны следующие ситуации авторизации и деавторизации: 1. 2. 3. 4. 5. 6. Пользователь авторизован до входа в игру Пользователь авторизуется во время игры через интерфейс сайта Пользователь авторизуется во время игры через интерфейс игры Пользователь не авторизован Пользователь деавторизуется во время игры через интерфейс сайта Пользователь деавторизуется во время игры через интерфейс игры Варианты реализаций каждой из ситуаций: 1. Пользователь авторизован до входа в игру. tomatAPI.init({ webId : 1, login : loginFunction, logout : logoutFunction, uid : 123456, token : "2680bb809d73f5ee3e8ee9d71b41c1d5" }); ,где login – js-функция, которая будет вызываться при авторизации пользователя logout uid - js-функция, которая будет вызываться при деавторизации пользователя - идентификатор пользователя на сайте token – проверочный ключ пользователя При такой инициализации игровой контейнер получит данные авторизованного пользователя во время входу в игру. 2. Пользователь авторизуется во время игры через интерфейс сайта. Возможны 2 варианта авторизации: без перезагрузки страницы: tomatAPI.onLogin({ uid : 123456, token : "2680bb809d73f5ee3e8ee9d71b41c1d5" }); с перезагрузкой страницы – при такой авторизации повторяется ситуация «Пользователь авторизован до входа в игру» 3. Пользователь авторизуется во время игры через интерфейс игры. В таком случае вызывается js-функция, переданная при инициализации tomatAPI в параметре login. Эта функция, например, может поднимать диалоговое окно авторизации Вашего сайта, или перенаправлять пользователя на страницу авторизации (крайне не рекомендуется, так как закрытие игрового окна может отрицательно повлиять на лояльность пользователей, в таком случае рекомендуется открывать окно авторизации в отдельной вкладке, после авторизации вызывать tomatAPI.onLogin ) 4. Пользователь не авторизован tomatAPI.init({ webId : 1, login : loginFunction, logout : logoutFunction, }); 4. Пользователь деавторизуется во время игры через интерфейс сайта. Деавторизовать пользователя в игре без перезагрузки страницы можно так: tomatAPI.onLogout(); При перезагрузке страницы повторится ситуация «Пользователь не авторизован» 4. Пользователь деавторизуется во время игры через интерфейс игры. В таком случае вызывается js-функция, переданная при инициализации tomatAPI в параметре logout . Эта функция, например, может поднимать диалоговое окно подтверждения деавторизации, или обновить страницу с уже удалённой пользовательской сессией. URL Авторизации В момент авторизации пользователя на Вашем сайте, клиент получает uid и token, эти данные передаются на URL авторизации на серверной стороне. В ответ должны вернуться пользовательские данные в формате JSON. Пример запроса http://yoursite.com/auth.php?uid=123456&appid=123& token=2164a69d64bdc700f9525711f6e7b905 Пример результата {"first_name":"Vasya","last_name":"Pupkin","uid":"123456","photo":"http:\/\/yoursite. com\/img\/photo.jpg",,"photo_big":"http:\/\/yoursite.com\/img\/photo.jpg","sex":2,"bd ate":"1988-06-22","profile":"http:\/\/yoursite.com\/profile\/id123456"} 4. ПОЛЬЗОВАТЕЛЬСКИЕ ДАННЫЕ Для правильного отображения пользовательских данных в игре, а также для лучшего рекламного таргетинга необходимо предоставлять следующий набор данных пользователя: Название параметра Обязательный Описание uid да Уникальный идентификатор пользователя first_name да Имя пользователя last_name да Фамилия пользователя photo да Аватар пользователя (50x50) photo_big Фото пользователя (200x200) sex Пол. Муж – 2 Жен – 1 Не определён – 0 bdate Дата рождения в формате "YYYY-MM-DD" profile да Ссылка на профиль пользователя на сайте Указаны рекомендуемые размеры фото пользователя. В ином случае фото будет масштабироваться. 5. КРОССДОМЕННАЯ ПОЛИТИКА БЕЗОПАСНОСТИ Для того чтобы flash-клиент мог осуществлять запросы к API сайта, необходимо наличие файла crossdomain.xml в корне сайта. Содержимое файла: <cross-domain-policy> <site-control permitted-cross-domain-policies="master-only"/> <allow-http-request-headers-from domain="*.apitech.ru" headers="*"/> <allow-access-from domain="*.apitech.ru" to-ports="80"/> </cross-domain-policy>