Имеется тестовое Iframe приложение. Главный класс вот такой:

Код AS3:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.system.Security;
import flash.text.TextField;
import ru.mailru.MailruCall;
public class TEST extends MovieClip
{
public var t:TextField;
private var p_user_id:String;
public function TEST()
{
// constructor code
t.appendText( "loaded\n" );
Security.allowDomain( "*" );
MailruCall.addEventListener( Event.COMPLETE, ready );
MailruCall.init( "flash-game", "мой приватный ключик" );
}
private function ready( e:Event ):void
{
stage.loaderInfo.parameters;
MailruCall.removeEventListener( Event.COMPLETE, ready );
p_user_id = MailruCall.exec( "mailru.session.vid" );
t.appendText( p_user_id );
getFriends();
}
private function getFriends():void
{
MailruCall.exec( "mailru.common.friends.getAppUsers", getFriendsComplete, p_user_id );
}
private function getFriendsComplete( data:Object ):void
{
t.appendText( data as String );
}
}
}
АПИ инициализируется хорошо, но при попытке получить друзей, возвращается ошибка 104. Как правильно работать с этой JS API?
Добавлено через 5 часов 43 минуты
Благодаря магии Дэвида Блэйна, выяснилось, что iFrame-приложение инициализируется следующим образом:
1) На html-странице происходит инициализация по приватному ключу.
2) Затем во flash-приложении происходит инициализация по секретному ключу. При этом не нужно дожидаться Event.COMPLETE, а сразу после init можно работать с API.
В рот мне ноги...