
Работа с Player IO API: Регистрация и Captcha
Совсем недавно, после статей darkvam,
я решил тоже попробовать написать что нибудь с помощью этого сервиса. В статье пойдет речь о регистрации с помощью «QuickConnect for Simple Users». Работа с «QuickConnect for Facebook» и «Kongregate» мало чем будет отличаться.
Сразу скажу, что для работы с этой функцией player.io не требуется написание серверного кода.
Вступление.
Честно говоря, это не первое мое сетевое приложение, я писал небольшой чат с перемещающимися аватарами на GameMaker, поэтому немножко теории о построении таких игр у меня было и до знакомства с flash. Правда регистрации не было никакой. Для работы нам понадобится аккаунт player.io и что нибудь реализующее интерфейс взаимодействия во flash. Я воспользуюсь minimalcomps.com прикрученный к flixel ( :) ).
Шаг первый.
Проходим такой путь: админка player.io -> QuickConnect -> Change QuickConnect Settings -> Enable QuickConnect for SimpleUsers. Здесь сразу можно указать какие настройки нам не нравятся, а какие нравятся. Например я решил что не нужно требовать почту на данном этапе, и буду использовать черно-белую captcha.

Настройки можно изменить в любой момент, почта потребует еще поле для ввода в регистрации и один аргумент в запросе, а каптча ничего не потребует. Замечу, что сложность captcha зависит от ее размера в px.
Шаг второй
Ваяем интерфейс с функциями заглушками. У меня регистрация состоит из двух окошек, первое это форма входа в игру, а второе это captcha. Еще нам понадобится окошко для информирования пользователя об ошибках возникающих при регистрации. Логика программы выглядит вот так:

Проверка на валидность и генерация ошибок будет происходить автоматически, нам лишь нужно предусмотреть для этого функции. У меня получились вот такие окошки:


Слева окошко входа\регистрации, справа окошко captcha, которое появляется после того, как кликнуть по кнопке Register. После того как окошки сделаны, начнем писать код регистрации…
Шаг третий.
Кнопка Register:

PlayerIO.quickConnect.simpleGetCaptcha — имеет пять аргументов. Это код игры, ширина, высота изображения captcha, функция с помощью которой будем загружать изображение и пятая, не представленная на картинке, это функция ошибки получения ссылки. От высоты и ширины captcha зависит ее сложность (минимальное количество символов 4, максимальное 8. Есть ограничения на минимальный и максимальный размер captcha. По высоте 30 и 500, а по ширине 80 и 500, просто я уже сталкивался с такой ошибкой :).
Загрузка изображения:

Обращаем внимания на аргументы функции. Первый это ключ captcha, который понадобится нам, когда будем посылать введенные пользователем символы. Второй это ссылка на captcha. Он представляет собой ссылку вида «playerio.com/getcaptchaimage/%captchakey%». В остальном, код должен быть понятным. С помощью Loader загружаем изображение, и размещаем его на форме. Я немножко некрасиво это сделал, без индикации загрузки и прочего, но, по-другому не умею. После загрузки изображения и размещения его на форме, ждем ввода символов и подтверждения его окончания.
Подтверждение ввода

ExtraData — это обычный объект: {style:«black»,gender:«male»,sex:«regular»}
handleConnect — будет один и для login, и для register, рассмотрим ее позже. А вот handleCaptchaError специальная функция, у нее другой аргумент:

Тип ошибки «PlayerIORegistrationError», от обычной ошибки он отличается наличием полей: captchaError, emailError, usernameError, passwordError. На картинке показана как можно их обрабатывать. Вам не рекомендую так делать :). В случае ошибки показывается панель ошибок, которая состоит из подложки и текста(который передается в аргументе функции). После того как окошко уберется, оно вызовет окно Login. На этом с captcha покончим :), перейдем к обработке кнопки login.
Вход в игру

Все уже объяснено выше, поэтому рассмотрим функцию handleConnect:

Никакого откровения, честно говоря она из себя не представляет, стандартный вызов из документации. Кстати, если вы задумаете писать что нибудь с помощью этого сервиса, сразу запомните, что верить их документации НЕЛЬЗЯ, верьте подсветке синтаксиса, даже эта команда у них в разных местах записана по разному. Еще есть подстава на сервере с командой player.PlayerObject.Get(«Image»,0); — ее не существует, хотя в документации она используется во многих местах. Вместо нее нужно использовать GetInt и другие.
handleLoginError — просто вывод на экран сообщения об ошибке со стандартным (для playerio)типом ошибки PlayerIOError:

Заключение.
На этом Всё. У меня в приложении все работает так, саму игру покажу попозже (сейчас пишу lobby), через недельку наверно :). Извиняюсь за код в картинках, просто с тегом code не разобрался. В целом, сам код не представляет практической пользы, т.к. у вас совсем другие переменные будут :).


Вступление.
Честно говоря, это не первое мое сетевое приложение, я писал небольшой чат с перемещающимися аватарами на GameMaker, поэтому немножко теории о построении таких игр у меня было и до знакомства с flash. Правда регистрации не было никакой. Для работы нам понадобится аккаунт player.io и что нибудь реализующее интерфейс взаимодействия во flash. Я воспользуюсь minimalcomps.com прикрученный к flixel ( :) ).
Шаг первый.
Проходим такой путь: админка player.io -> QuickConnect -> Change QuickConnect Settings -> Enable QuickConnect for SimpleUsers. Здесь сразу можно указать какие настройки нам не нравятся, а какие нравятся. Например я решил что не нужно требовать почту на данном этапе, и буду использовать черно-белую captcha.

Настройки можно изменить в любой момент, почта потребует еще поле для ввода в регистрации и один аргумент в запросе, а каптча ничего не потребует. Замечу, что сложность captcha зависит от ее размера в px.
Шаг второй
Ваяем интерфейс с функциями заглушками. У меня регистрация состоит из двух окошек, первое это форма входа в игру, а второе это captcha. Еще нам понадобится окошко для информирования пользователя об ошибках возникающих при регистрации. Логика программы выглядит вот так:

Проверка на валидность и генерация ошибок будет происходить автоматически, нам лишь нужно предусмотреть для этого функции. У меня получились вот такие окошки:


Слева окошко входа\регистрации, справа окошко captcha, которое появляется после того, как кликнуть по кнопке Register. После того как окошки сделаны, начнем писать код регистрации…
Шаг третий.
Кнопка Register:

PlayerIO.quickConnect.simpleGetCaptcha — имеет пять аргументов. Это код игры, ширина, высота изображения captcha, функция с помощью которой будем загружать изображение и пятая, не представленная на картинке, это функция ошибки получения ссылки. От высоты и ширины captcha зависит ее сложность (минимальное количество символов 4, максимальное 8. Есть ограничения на минимальный и максимальный размер captcha. По высоте 30 и 500, а по ширине 80 и 500, просто я уже сталкивался с такой ошибкой :).
Загрузка изображения:

Обращаем внимания на аргументы функции. Первый это ключ captcha, который понадобится нам, когда будем посылать введенные пользователем символы. Второй это ссылка на captcha. Он представляет собой ссылку вида «playerio.com/getcaptchaimage/%captchakey%». В остальном, код должен быть понятным. С помощью Loader загружаем изображение, и размещаем его на форме. Я немножко некрасиво это сделал, без индикации загрузки и прочего, но, по-другому не умею. После загрузки изображения и размещения его на форме, ждем ввода символов и подтверждения его окончания.
Подтверждение ввода

ExtraData — это обычный объект: {style:«black»,gender:«male»,sex:«regular»}
handleConnect — будет один и для login, и для register, рассмотрим ее позже. А вот handleCaptchaError специальная функция, у нее другой аргумент:

Тип ошибки «PlayerIORegistrationError», от обычной ошибки он отличается наличием полей: captchaError, emailError, usernameError, passwordError. На картинке показана как можно их обрабатывать. Вам не рекомендую так делать :). В случае ошибки показывается панель ошибок, которая состоит из подложки и текста(который передается в аргументе функции). После того как окошко уберется, оно вызовет окно Login. На этом с captcha покончим :), перейдем к обработке кнопки login.
Вход в игру

Все уже объяснено выше, поэтому рассмотрим функцию handleConnect:

Никакого откровения, честно говоря она из себя не представляет, стандартный вызов из документации. Кстати, если вы задумаете писать что нибудь с помощью этого сервиса, сразу запомните, что верить их документации НЕЛЬЗЯ, верьте подсветке синтаксиса, даже эта команда у них в разных местах записана по разному. Еще есть подстава на сервере с командой player.PlayerObject.Get(«Image»,0); — ее не существует, хотя в документации она используется во многих местах. Вместо нее нужно использовать GetInt и другие.
handleLoginError — просто вывод на экран сообщения об ошибке со стандартным (для playerio)типом ошибки PlayerIOError:

Заключение.
На этом Всё. У меня в приложении все работает так, саму игру покажу попозже (сейчас пишу lobby), через недельку наверно :). Извиняюсь за код в картинках, просто с тегом code не разобрался. В целом, сам код не представляет практической пользы, т.к. у вас совсем другие переменные будут :).
- +8
- WeslomPo
Комментарии (2)