-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
132 lines (104 loc) · 7.64 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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 <INetworkConfig>[ // Настройки соцсетей
new ConfigVkcom(),
new ConfigMock().setData(MOCK_DATA), // Указываем снимок данных
],
new <INetworkModule>[ // Подключение модулей соцсетей
new ModuleVkcom(),
new ModuleMock(),
],
new <IBusModule>[ // Подключение дополнительных модуле
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("@")