Я думаю, что в настоящее время лучшая практика состоит в том, чтобы получить все через javascript SDK и передать эти объекты в ваш swf через внешний интерфейс.
Пример .. (убедитесь, что ваш swf-идентификатор - "flashObj")
Код Javascript:
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: '<INSERT YOUR APP-ID>', status: false, cookie: true, xfbml: false});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
function connectUser() {
FB.api('/me', function(response) {
var usrs = new Array();
usrs.push(response);
document.getElementById('flashObj').loadUser(usrs);
});
};
function requestLogin()
{
FB.login(function(response) {
if (response.session) {
if (response.perms) {
document.getElementById('flashObj').onLogin();
} else {
// user is logged in, but did not grant any permissions
}
} else {
// user is not logged in
}
}, {perms:'email,user_birthday'});
}
</script>
А затем в AS3:
public function FBconnect():void {
ExternalInterface.addCallback("onLogin", onLogin);
ExternalInterface.call("requestLogin");
}
private function onLogin():void {
trace("FB LOGIN");
connectUser();
}
private function connectUser():void {
ExternalInterface.addCallback("loadUser", userCallback);
ExternalInterface.call("connectUser");
}
private function userCallback(data:Array):void {
trace("FB USER LOADED");
var userData:Object = data[0];
traceObject(userData);
_FBuser = new FBUser(userData.id);
_FBuser.firstName = userData.first_name;
_FBuser.lastName = userData.last_name;
var d:Date = new Date(String(userData.birthday));
_FBuser.birthDate = d;
_FBuser.gender = userData.gender;
_FBuser.email = userData.email;
dispatchEvent(new Event(Event.COMPLETE));
}