Odnoklassniki.API 2.0 photo upload V2
В апреле (2012) запущено новое АПИ ОК для загрузки фотографий в альбом пользователя. Собственный SDK для AC 3.0 Одноклассников реализует, пока, старый метод. Весьма вероятно, что к новым приложениям будет предъявляться требование upload-a с использованием нового метода, т.к. старый создает нагрузку на дата-сервера пересылая данные через них, новый же загружает изображения уже прямо на имидж-серверы. Во всяком случае мне пришлось отказаться от использования старого АПИ, в этой части, и по требованию со стороны ОК написать аплоад с использованием нового АПИ.
Собственно плагин для нового метода загруки и есть предмет этой записи. Документация к нему есть, там, вроде, сказано достаточно. Хочу заметить, лишь, что в оригинальной версии приложения для выведения хеш-подписи запроса, десериализации JSON-а, и кодирования фото в формат jpg использовалась известная библиотека BlooDHounD-a, но из за того, что в приложениях скомпилированных под 11-ый и выше плеер она работать не будет в этой версии пришлось подключить соотв. классы из пакета api.com.adobe..., которые есть в стандартном SDK API Odnokassniki, правда эту или какую либо другую библиотеку для кодирования изображения использовать по прежнему можно, только, теперь, не как внутренний компонент, а как внешний ( см. доки ). Для работы плагина сдк, конечно, должно быть включено в проект...
Пример использования:
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import su.fishr.social_network.OK.uploadV2.DataPhoto; import su.fishr.social_network.OK.uploadV2.UploaderPhotoV2; public class Main extends Sprite { /// гл. класс приложения public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } ///инициализация private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point this.stage.scaleMode = StageScaleMode.NO_SCALE; this.stage.align = StageAlign.LEFT; /// в качестве примера отрисовываем сцену в массив BitmapData const bData:BitmapData = new BitmapData( this.stage.stageWidth, this.stage.stageHeight, false ); bData.draw( this ); /// создаем объект Bitmap const bt:Bitmap = new Bitmap( bData ); /// создаем структурированный объект dataPhoto const dataPhoto:DataPhoto = new DataPhoto( callBack, bt, "this is me", "myPhoto" ); /// начинаем загрузку фотографии (изображения) new UploaderPhotoV2( dataPhoto, this.loaderInfo.parameters ); } /// сюда будет возвращен результат загрузки private function callBack( result:String ):void { switch ( result ) { case UploaderPhotoV2.ANOTHER_ERROR : trace( "what the error ( " ); /// some action break; case UploaderPhotoV2.NO_BODY_PHOTO: trace( "no photo (" ); /// another action break; case UploaderPhotoV2.NO_ACCESS_PHOTOALBUM: trace( "Please give access to the album!" ); break; default: trace( "Congratulations! Your photo added in album!"); } } } }
Всего комментариев 25
Комментарии
10.06.2012 01:13 | |
Здорово, спасибо!
Только не очень здорово, что простой callback. Куда приятней использовать событие для таких штук. |
10.06.2012 09:30 | |
а. да. Ты прав. Этот и другие недостатки ( "бедность палитры" ошибок, отсутствие реализации серийной загрузки...) имеют место быть. Дело в том, что это писалось под требования конкретной среды, а не с целью "международного признания" ) Это, может быть, не очень хорошо, но "чем богаты...". Впрочем с каллбэками лечится легко, как снаружи так и внутри.
У этого скрипта есть ещё одна полезная, и может быть более важная, сторона. Это демонстрация очень простой, на мой взгляд, модели общения с АПИ ОК. Мне лично очень помогают простые и работающие примеры вместо пространных/заумных/неграмотных/невнятных/неполных ( нужное подчеркнуть ) хелпов сервисов, для освоения различных техник и технологий взаимодействия с ними (сервисами). Даже если всё понятно написано, ты всё равно чувствуешь некоторую неуверенность сначала потому, что не знаешь что декларативно, а что работает на самом деле. PS. Мне бы и в голову не пришло публиковать что то подобное, если бы речь шла об вк или facebook, по ним есть много материалов, да и вообще там как то всё яснее. По ОК-же всего очень мало и на флешере, и в нете, и собственно на ОК... |
|
Обновил(-а) fish_r 10.06.2012 в 10:03
|
11.06.2012 07:48 | |
А в чем разница? Подписались - отписались, это 2 строчки кода. Только события куда более гибкие, расширяемые и безгеморойно-устойчивые.
|
13.06.2012 12:06 | |
Всё просто: дают примочки - бери.
|
13.06.2012 14:02 | |
Я за единообразие кода. Если пользуемся событиями, давайте пользоваться событиями, и ничего не "упрощать" таким вот способом.
|
14.06.2012 22:08 | |
А, ну да, из ракеты по воробьям. Единственный недостаток callback-ов в AS3 - это отсутствие возможности указать сигнатуру (ну и перегрузка функций тоже не хватает). Callback-и быстрее (сами Adobe советует, хотя и так понятно). Если нужно много обработчиков (не в будущем, когда-то возможно потребуется, ну мало-ли, а действительно использование здесь и сейчас), то события. Иначе callback. В таких сервисах вообще не понятно при каких обстоятельствах может потребоваться много подписчиков. Ну, запросили Вы список друзей, и что все приложение будет подписываться на это событие? Бред. Ну приведите мне пример, когда вдруг нужно добавить события к такому сервису?
Цитата:
А в чем разница? Подписались - отписались, это 2 строчки кода. Только события куда более гибкие, расширяемые и безгеморойно-устойчивые.
|
|
Обновил(-а) Inet_PC 14.06.2012 в 22:10
|
15.06.2012 07:51 | |
Inet_PC абсолютно солидарен с твоей (могу на ты?) точкой зрения на использование калбэков. Что то странное, и от религии, есть в обете "не использовать калбэки никогда и ни за что", тем более странно, что их использование, якобы, должно негативно влиять на расширяемость приложения - да ни разу! Анонимность калбэков как нельзя лучше влияет на расширяемость, вот на отлаживаемость плохо - это да.
Цитата:
Зачем все вокруг бегуют за этой расширяемостью. Это все мертвый код. Не возможно написать все максимально расширяемо-настраевомо (да и еще и надеятся, что там будет меньше ошибок).
|
|
Обновил(-а) fish_r 15.06.2012 в 08:18
|
15.06.2012 09:50 | |
А я так и не понял, в чём профит использования огорода с коллбеками в данном случае, и почему события обзывают кувалдой.
|
15.06.2012 11:14 | |
Цитата:
А я так и не понял, в чём профит использования огорода с коллбеками в данном случае, и почему события обзывают кувалдой.
В контексте приложения в котором он работал это было выигрышным решением, т.к. результаты выгрузки интересовали объект который не имел ссылок ни на провайдер ни на контроллер, верно и обратное - ни провайдер, ни контроллер не имели ссылок на заинтересованный объект. И вот, чтобы не городить огород с декларированием события, подпиской на него, отлавливанием, отпиской ( и это надо было бы повторить не один раз, чтобы через цепочку не заинтересованных объектов передать информацию целевому) я и сделал калбэк, и до сих пор об этом не жалею. |
|
Обновил(-а) fish_r 15.06.2012 в 11:19
|
18.06.2012 00:03 | |
А почему библиотека Блуда не будет работать под -swf-version=13 и выше (11.0 плеер и выше)?
|
18.06.2012 12:31 | |
Потому что Alchemy.
|
25.06.2012 22:42 | |
Вот оно шо, Дениска )
Valyard, тут намедни, на FlasGamm допытывал ихнево евангелиста на предмет того, как будут отслеживать эти $50к+. Тот сказал, что если найдем, то покараем! |
|
Обновил(-а) dimarik 25.06.2012 в 22:48
|
27.06.2012 19:18 | |
Цитата:
Ну вообще то будет работать, у меня в проекте stage3d параллельно используется с bloddy_crypto. Только есть момент, что при использовании stage3d api и Alchemy одновременно, нужно платить 9% адобу, еслии доход от приложения >50000$
Стоит также добавить, что в blooddy_crypto тот же json не использует никакой алхимии. Так что сам факт наличия данной swc в проекте не обязательно приводит к использованию сакральных опкодов. |
|
Обновил(-а) gloomyBrain 27.06.2012 в 19:21
|
Последние записи от fish_r
- Odnoklassniki.API 2.0 photo upload V2 (09.06.2012)
- Универсальный трейсер. (21.05.2012)
- SVN. Автоматическая архивация локального репозитория. (23.06.2011)
- Поворот объекта вокруг произвольной точки. (30.04.2011)