Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nitrobin/as3snapi
https://github.com/nitrobin/as3snapi
Last synced: about 10 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/nitrobin/as3snapi
- Owner: nitrobin
- License: bsd-3-clause
- Created: 2013-02-09T10:38:22.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2013-02-09T10:55:35.000Z (almost 12 years ago)
- Last Synced: 2024-04-15T03:03:45.322Z (10 months ago)
- Language: ActionScript
- Size: 492 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
- License: LICENSE_EN.txt
Awesome Lists containing this project
README
ActionScript 3 Social Network API - универсальная библиотека для работы с API соцсетей из Flash-приложений.
ЛИЦЕНЗИЯ
BSD
ОСНОВНЫЕ ВОЗМОЖНОСТИ
На данный момент реализованы базовые функции API:
* получение друзей;
* получение друзей в приложении;
* получение своего профиля;
* отображение окна приглашения друзей.
Из документации имеется код приложения sandbox (в репозитории) :)Список поддерживаемых соцсетей:
* http://vk.com - Вконтакте;
* http://my.mail.ru - Мой мир;
* http://odnoklassniki.ru - Одноклассники;
* http://facebook.com - Facebook (черновая реализация);
* mock - тестовая offline-сеть на основе конфиг-файла. Имеется возможность сделать сделать снимок данных с любой из вышеперечисленных сетей и использовать их оффлайн для отладки через mock сеть.
В ближайших планах расширение этого списка.
ОСОБЕНОСТИ
Основные идеи заложенные в as3snapi:
* использовать единый swf файл приложения для всех соцсетей;
* предоставлять возможность запуска приложения без изменений через iframe и непосредсвенно swf (my.mail.ru, vk.com)
* определять доступную соцсеть автоматически, на основе flashvars;
* включать в приложение код только для используемых сетей;
* максимально повторно использовать код внутри библиотеки;
* предоставлять общий интерфейс для схожего API разлиных сетей;
* оставлять возможность прямого доступа к специфичным функциям соцсети;
* предоставлять возможность работы в offline-режиме (mock-сеть);
* быть "готовой ко всему". В экзотических соцсетях любая привычная функция может отсутствовать (нет окна приглашения друзей, нет функции загрузки всех друзей, нет функции загрузки профиля по id и т.д.), код приложения должен быть готов к этому и иметь возможность проверить доступность функционала.Особенности реализации:
* Доступ к возможностям соцсетей осуществялется через механизм 'фич' (обычный ActionScript interface) подключаемых к общей 'шине' (примитивный IoC-контейнер);
* Имеется набор базовых 'фич', которые поддерживаются большинством сетей (получить профиль, список друзей, пригласить друзей, и т.д.);
* Для доступа к специфичным возможностям модуль соцсети вводит свои собственные дополнительные 'фичи';
* Модули сетей реализованы в виде отдельных плагинов.ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
Собраную песочницу можно скачать отсюда:
https://bitbucket.org/nitrobin/as3snapi/downloads
http://cdn.bitbucket.org/nitrobin/as3snapi/downloads/as3snapi-sandbox-1.0.4-SNAPSHOT.swf
Без параметров приложение запуститься в режиме mock;Пример на ActionScript3 инициализации API и загрузки своего профиля:
// as3snapi-sandbox/src/HelloWorld.as
public class HelloWorld extends Sprite {
private var tf:TextField = new TextField();public function HelloWorld() {
tf.width = 400;
tf.height = 400;
tf.wordWrap = true;
addChild(tf);// Подключение и настройка требуемых соцсетей
var factory:IConnectionFactory = new ConnectionFactory(
stage.loaderInfo.parameters, // Передача FlashVars
new [ // Настройки соцсетей
new ConfigVkcom(),
new ConfigMock().setData(MOCK_DATA), // Указываем снимок данных
],
new [ // Подключение модулей соцсетей
new ModuleVkcom(),
new ModuleMock(),
],
new [ // Подключение дополнительных модуле
new BusModuleLogTrace() // Включаем выдачу внутренних логов через trace
]
);// Подключаемся к API
factory.createConnection(new NetworkConnectHandler(onSuccess, onFail));function onFail(result:Object):void {
tf.text = "FAIL";// Неудача
}function onSuccess(connection:INetworkConnection):void {
tf.text = "READY";// API готово
// Получаем фичу для загрузки своего профиля
var feature:IFeatureSelfProfile = connection.getFeature(IFeatureSelfProfile)
if (feature != null) {
// фича доступна, загружаем профиль
feature.getSelfProfile(
new OneProfileHandler(function (profile:IProfile):void {
// Обрабатываем полученный профиль
tf.text = "Hello, " + profile.getFullName() + "!\n" +
"Your profile: " + JsonUtils.encode(profile);
}, function (result:Object):void {
// Ошибка при получении профиля
tf.text = "FAIL: " + JsonUtils.encode(result);
}));
} else {
// фича недоступна.. :(
tf.text = "IFeatureSelfProfile - UNSUPPORTED";
}
}
}// Фиксированные данные для выдачи через Mock API
private static const MOCK_DATA:Object = {
shortNetworkId:"mock",
userId:1,
inviterId:2,
appId:123,
profiles:{1:{fullName:"Jimmy"}, 2:{fullName:"Pavel"}, 3:{fullName:"Mark"}},
appFriendsUids:[2],
friendsUids:[2, 3]
};
}ГДЕ ИСПОЛЬЗУЕТСЯ?
Изначально библиотека разработана с прицелом на использование в домашних экспериментальных проектах, но нашла применение и за их пределами. :)
В настоящее время используется в проекте "Мастера войны" (http://vk.com/app2699907) компании "Igrostar" (http://igrostar.com)АВТОР
2012 (c) Евгений Веретенников ["nitro.bin","gmail.com"].join("@")