![]() |
|
|
![]() |
![]() |
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
![]() Здравствуйте. Пишу себе универсальную машину для работы с различными API соц. сетей. Сейчас остановила публикация записей на стену. Проблем с выгрузкой локально нет, но вот при удалённом тесте загрузка не стартует. Привожу код и логи операций, подскажите может кто-то явно видит где я допустил ошибку, а пока сам буду рыть.
package multiapi.processor { import flash.geom.Matrix; import flash.geom.Rectangle; import flash.utils.ByteArray; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.PixelSnapping; import flash.display.DisplayObject; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestHeader; import flash.net.URLRequestMethod; import com.adobe.images.JPGEncoder; import com.adobe.serialization.json.JSON; import multiapi.data.MultipartData; import multiapi.data.GlobalData; public class Poster { public function Poster() { // constructor code } public function images($data:Object, user_id:String,options:Object,completeFunc:Function=null,failFunc:Function=null):void { GlobalData.log.add('Images'); if (!options.quality) options.quality = 80; options.url = (options.url) ? ','+options.url : ''; var jpg:JPGEncoder = new JPGEncoder(options.quality); var ba:ByteArray = new ByteArray(); ba = jpg.encode( extractBmpd(options.image, 0, 0 , options.image.width, options.image.height) ); var urlRequest:URLRequest = new URLRequest($data.upload_url); urlRequest.method = URLRequestMethod.POST; urlRequest.requestHeaders.push(new URLRequestHeader("Content-type", "multipart/form-data; boundary=" + MultipartData.BOUNDARY)); var urlLoader = new URLLoader(); GlobalData.log.add('urlLoader'); urlLoader.addEventListener(Event.COMPLETE, function(event:Event):void { GlobalData.log.add('upload_complete'); var callback:Object = JSON.decode(event.target.data); GlobalData.log.add(callback); GlobalData.api.multi.api("photos.saveWallPhoto",{server:callback.server,photo:callback.photo, hash:callback.hash}, function(data:Object):void { GlobalData.log.add('start post'); GlobalData.log.add(data); GlobalData.api.multi.api("wall.post",{owner_id:user_id,message:options.desc,attachments:data[0].id+options.url}, completeFunc, failFunc); }, failFunc); }); urlLoader.addEventListener(Event.OPEN, function(event:Event):void { } ); var bitdata:MultipartData = new MultipartData(); bitdata.addFile(ba, "photo"); urlRequest.data = bitdata.data; GlobalData.log.add('start load'); urlLoader.load(urlRequest); GlobalData.log.add('starting'); } private function extractBmpd( ARG_object:DisplayObject, ARG_x:Number, ARG_y:Number, ARG_width:Number, ARG_height:Number):BitmapData { GlobalData.log.add('extractBmpd'); var cropArea:Rectangle = new Rectangle(0, 0, ARG_width, ARG_height); var bmpd:BitmapData = new BitmapData(ARG_width, ARG_height); var croppedBitmap:Bitmap = new Bitmap(bmpd, PixelSnapping.ALWAYS, true); var cropMatrix:Matrix = new Matrix(); cropMatrix.translate(-ARG_x, -ARG_y); bmpd.draw( ARG_object, cropMatrix, null, null, cropArea, true ); return bmpd; } } } posting for user > 16580191 url = http://vk.com/mind.battle desc = текст upload_url = http://cs307304.vkontakte.ru/upload.php?act=do_add&mid=16580191&aid=-14&gid=0&hash=1f1b790fe86d10bf6ab62fd04f6dd20f&rhash=4f6a5f8e293dbfacc8a661f06c337291&swfupload=1&api=1&wallphoto=1 aid = -14 mid = 16580191 Images extractBmpd urlLoader start load starting
__________________
return this... |
|
|||||
Старт публикации
public function post(user_id:String,options:Object,callBackOk:Function=null,callBackFail=null):void { GlobalData.log.add('posting for user > '+user_id); GlobalData.log.add(options); if (!callBackFail) callBackFail = onApiRequestFail; multi.api("photos.getWallUploadServer", {"uid":user_id}, function(data:Object):void { GlobalData.log.add(data); GlobalData.poster.images(data,user_id,options,callBackOk,callBackFail) } , callBackFail); } wrapper.external.post(16580191, {'desc':'текст','image':spr, 'url':'http://vk.com/mind.battle'}, postOk, postFail ); break; Добавлено через 9 минут Подписался, говорит errorHandler: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"] Использую анонимные функции для того чтобы отдавать им уникальные параметры и при асинхронном выполнению, данные в них были актуальны именно для этого обработчика. Как бы Вы поступили? Понимаю что нужно писать что-то типа реестра обработчиков но бывают внешние события без подписи (идентификатора), просто пришли данные и все, в таком случая я не знаю кто ждет на самом деле эти данные. Добавлено через 20 минут не решил вопрос.
__________________
return this... |
|
|||||
Цитата:
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
вот сижу и думаю.. может это у меня уже мозги поплавились.. ведь использую конструкцию
social network -> iframe -> my flash conteiner -> content и просто напросто флеш запущенное не из домена (к примеру вконтакте) не сможет выгрузить картинку... Извините за возможно нелепые рассуждения день мозгового штурма был. Добавлено через 2 минуты Спасибо за наводку, так даже более оптимальней нежели хранить статически постер
__________________
return this... |
|
|||||
Цитата:
Получается так, что у меня iframe. У меня флеш генерит картинку и потом пытается выгрузить на сервер и в этот момент не проходит по безопасности. Я могу передать из флеша в джаваскрипт картинку чтобы тот выгрузил?
__________________
return this... |
|
|||||
у меня вообще стоит * в кросс домене.
Добавлено через 5 минут у Вас ифреймовское приложение выгружает из флеша картинки на сервера вк?
__________________
return this... |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:47. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|