02 февраля 2012

socialAPI или как делать игру для всех социалок



Сейчас очень часто flash упоминается как средство разработки игр для социальных сетей. Но социальных сетей очень много и у них совершенно разный api для работы с инструментами самой социальной сети. Не так давно я задумался над тем, что было бы замечательно сделать библиотеку которая бы могла помочь с этом вопросом. И так как у меня сейчас есть свободное время я решил этим заняться.

И я хочу продемонстрировать первую версию для работы с социальными сетями для actionscript 3.0, под названием socialAPI.


Для начала я решил взять две социальные сети со свободным доступом к песочнице: мой мир и вконтакте. Получилось просто и легко.
Кратко, о том что теперь не прийдется делать разработчику, а именно что за него сможет сделать данная библиотека:
1). Определение социальной сети по flashVars.

2). Авторизация в социальной сети.
     - для вконтакте проверка настроек доступа.

3). Получение информации о пользователе.

4). Получение списка друзей и информации о них.

5). Открытие окна приглашения друзей.

И так что нам для этого будет необходимо:
  • Скачаем саму библиотеку http://mixailflash.assembla.me и напишем код.
  • После этого выложим наше приложение в социальные сети и посмотрим что все работает.
Код для подключения библиотеки и пример использования команд:
package
{
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import SocialAPI.connection.*;
    public class main extends Sprite
    {
        private var connectionAPI:ConnectionApi;

        public function main()
        {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            trace ('this is sotialAPI');
            // get flashVars                  
            // получаем flashVars                                                                                        
            var parametrs:Object = this.loaderInfo.parameters;
         
            // add specific default settings for mm;                                                                                        
            // добавляем специфичесие настройки социальных сетей;
            parametrs.mm={DOMFlashId:'flash-app',        
                          privateKey:'a284a33469d7e982d344f4db15baaf7c'};
            //add specific default settings for vk;                                                                                        
            parametrs.vk = {setting:31};


            //rear of the name of social networks;                                                                                         
            // получаем имя социальной сети;
            ConnectionApi.SET_SOCIAL_NAME(parametrs);


            //create an instance of the social network;
            // создаем экземпляр объекта для работы с социальной сетью                                                                                   
            connectionAPI = new ConnectionApi.SOCIAL_CLASS_API(parametrs);
            //Adds a listener to successfully connect to a set of social;
            // добавляем слушатель успешной авторизации                                                                 
            connectionAPI.addEventListener(ConnectionApi.CONNECT, handlerConnect);
            //call the connect;            
            // вызываем метод авторизации                                                                                             
            connectionAPI.connect();
        }
        private function handlerConnect(event:Event):void
        {
            // отписываемся от прослушивания события
            connectionAPI.removeEventListener(ConnectionApi.CONNECT, handlerConnect);
            // добавляем слушатель успешного получения информации о пользователе
            connectionAPI.addEventListener(ConnectionApi.USER_COMPLITE, handlerUser);
            // запрашиаем информацию о пользователе
            connectionAPI.askUserInfo();
         }
        private function handlerUser(event:Event):void
        {
            connectionAPI.removeEventListener(ConnectionApi.USER_COMPLITE, handlerUser);
            connectionAPI.addEventListener(ConnectionApi.FRIENDS_COMPLITE, handleFriends);
            //запрашиваем информацию о друзьях;
            connectionAPI.askFriendsList();
        }
        private function handleFriends(event:Event):void
        {
            connectionAPI.removeEventListener(ConnectionApi.FRIENDS_COMPLITE, handleFriends);
            //выводим информацию о друзьях
            for(var g:* in connectionAPI.friends) connectionAPI.friends[g].out();
            // показываем окно приглашения друзей;
            connectionAPI.showInviteBox();
        }
    }
}

В следующей версии я постараюсь подключить facebook.com и расширить функционал имеющихся социальный сетей.
Жду предложений по развитию функционала.


4 комментария:

  1. есть пару замечаний по коду. сюда писать или в личку? =)
    Вообще идея отличная. я бы использовал библиотечку=)

    ОтветитьУдалить
  2. Да можно и сюда писать, проект то еще только на начальной стадии.

    ОтветитьУдалить
  3. - имена переменных лучше вынести в константы и юзать их отовсюду не боясь перепутать их где либо.
    - обычно пакеты называют множественным числом models, connections
    - имя connection лучше переделать с вида ConnectionSocialName на SocialNameConnection. опять же так принято именовать
    - сами пакеты со вспомогательными функциями лучше вынести в одну папку к примеру nets где будет лежать vk, mm, fb и т.д.
    - кстати сами имена лучше давать полные так как в будущем может появиться сеть с похожей на уже добавленную в библиотеке аббревиатурой

    вроде все. сильно не бей=)

    ОтветитьУдалить

Поделиться своими мыслями...