ошибка:
Цитата:
SecurityError: Error #2000: Отсутствует активный контекст безопасности.
|
Добавлено через 1 час 29 минут
немного изменил код и стало лучше но проблема не исчезла:
Код AS3:
public function PostCard(main, user, byteArray, msg)
{
this.msg = msg;
this.user = user;
this.main = main;
this.byteArray = byteArray;
this.VK = main.VK;
VK.api('photos.getWallUploadServer',{uid:user},responseFromServer,main.onError);
}
private function responseFromServer(data)
{
mll = new MultipartURLLoader ;
mll.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);
mll.addFile(byteArray, "file.jpg", "file1", 'image/jpg');
mll.load(data.upload_url);
}
private function onUploadCompleteThroughAlarm(e:Event)
{
var answer:String = mll.loader.data;
var data:Object = JSON.decode(answer);
VK.api('photos.saveWallPhoto', {uid: user, server:data.server, photo:data.photo, hash:data.hash}, onSaveWallPhoto, main.onError);
}
private function onSaveWallPhoto(response)
{
var answer:String = response
var data:Object = JSON.decode(answer);
VK.api('wall.post', { message: msg, owner_id: user, attachment: data.id }, function(response:Object) { trace(response.post_id)}, main.onError);
}
в аутпуте во флеше локально все ответы приходят. функция onSaveWallPhoto получает Object но вот дальше ошибки. если я пытаюсь как написано выше его JSON.deocde то получаю вконтакте все туже
Цитата:
SecurityError: Error #2000: Отсутствует активный контекст безопасности.
|
а локально в аутпуте
Цитата:
JSONParseError: Unexpected o encountered
at com.adobe.serialization.json::JSONTokenizer/parseError()
at com.adobe.serialization.json::JSONTokenizer/getNextToken()
at com.adobe.serialization.json::JSONDecoder/nextToken()
at com.adobe.serialization.json::JSONDecoder/parseArray()
at com.adobe.serialization.json::JSONDecoder/parseValue()
at com.adobe.serialization.json::JSONDecoder()
at com.adobe.serialization.json::JSON$/decode()
at Scripts::PostCard/onSaveWallPhoto()
at Function/<anonymous>()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
|
если трейсить response то вижу Object но response.id почемуто undefined
хотя ответ в аутпуте такой
Цитата:
{"response":[{"id":"photo55273336_228418330","pid":228418330,"aid":-7,"owner_id":55273336,"src":"http:\/\/cs11417.vkontakte.ru\/u55273336\/-7\/m_4513256f.jpg","src_big":"http:\/\/cs11417.vkontakte.ru\/u55273336\/-7\/x_aa56d719.jpg","src_small":"http:\/\/cs11417.vkontakte.ru\/u55273336\/-7\/s_acc095d3.jpg","created":1298899538}]}
|
может ли быть такое что функция вызывается до того как приходит ответ от сервера?
Добавлено через 1 час 50 минут
попробовал вот так:
Код AS3:
private function onUploadCompleteThroughAlarm(e:Event)
{
var answer:String = mll.loader.data;
var data:Object = JSON.decode(answer);
main.debug.appendText("on upload answer: "+data.server+"\n");
VK.api('wall.savePost', {wall_id: user, post_id:"post1", server:data.server, photo:data.photo, hash:data.hash, message: msg }, onSaveWallPhoto, main.onError);
//VK.api('photos.saveWallPhoto', {uid: user, server:data.server, photo:data.photo, hash:data.hash}, onSaveWallPhoto, main.onError);
}
private function onSaveWallPhoto(response)
{
trace(response)
}
пишет:
Цитата:
Fail wall.post error_msg: Invalid hash
|
Добавлено через 5 часов 51 минуту
Все получилось ура!
Публикует запись) осталось сделать раасылку нескольким друзьям. думаю что реализую это поочереди. Впрочем кажется мне может помоч в этом execute
Добавлено через 6 часов 8 минут
вдруг каму то пригодится
мне нужно было сделать класс который публиковал бы на стену изображение из ByteArray (в моем случае срисовывался мувиклип).
для реализации мне понадобились:
- APIConnection.zip
- MultipartURLLoader
- as3corelib
Код AS3:
package Scripts
{
import com.adobe.serialization.json.JSON;
import com.adobe.images.JPGEncoder;
import MultipartURLLoader.*;
import flash.events.Event;
import flash.utils.ByteArray;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.Bitmap;
import flash.display.PixelSnapping;
import flash.geom.Matrix;
public class PostCard
{
private var main; // ссылка на основной класс в катором создан APIConnection
private var VK;
private var user; //uid пользователя на стене которого размещаем запись
private var byteArray:ByteArray; // ByteArray изображения которое хотим прикрепить к посту
private var msg:String; // текст сообщения поста
private var mll:MultipartURLLoader;
public function PostCard(main, user, byteArray:ByteArray, msg:String)
{
this.msg = msg;
this.user = user;
this.main = main;
this.byteArray = byteArray;
this.VK = main.VK;
VK.api('photos.getWallUploadServer',{uid:user},responseFromServer,main.onError);
}
private function responseFromServer(data)
{
mll = new MultipartURLLoader();
mll.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);
mll.addFile(byteArray, "file.jpg", "file1", 'image/jpg');
mll.load(data.upload_url);
}
private function onUploadCompleteThroughAlarm(e:Event)
{
var answer:String = mll.loader.data;
var data:Object = JSON.decode(answer);
VK.api('photos.saveWallPhoto', {uid: user, server:data.server, photo:data.photo, hash:data.hash }, onSaveWallPhoto, main.onError);
}
private function onSaveWallPhoto(data)
{
VK.api('wall.post', { owner_id: user, attachment: data[0].id, message: msg}, function(e) { trace("onSaveWallPhoto id: "+e.post_id+"\n") }, main.onError);
}
}
}
|