/ Published in: ActionScript 3
I wanted an easy way to authenticate a user before making calls to Facebook. It's not perfect but it certainly makes things easier. Note: This is not a class!
Expand |
Embed | Plain Text
import com.facebook.commands.friends.GetFriends; import com.facebook.data.users.FacebookUser; import com.facebook.data.friends.GetFriendsData; import com.facebook.events.FacebookEvent; import com.facebook.Facebook; import com.facebook.net.FacebookCall; import com.facebook.utils.FacebookSessionUtil; import flash.display.Stage; import flash.display.LoaderInfo; import mx.controls.Alert; private var API_KEY:String = "API_KEY"; private var SECRET_KEY:String = "SECRET_KEY"; private var fbook:Facebook; private var fbLoaderInfo:LoaderInfo; private var fbSession:FacebookSessionUtil; private var currentMethod:Function; private function initApp():void { fbLoaderInfo = stage.loaderInfo; getFriends(); } /************************************** * Actions **************************************/ private function getFriends():void { //If the user is not logged in, force one if( !isAuthenticated() ){ fbLogin( arguments.callee ); return } var call:FacebookCall = fbook.post( new GetFriends( ) ); call.addEventListener( FacebookEvent.COMPLETE, getFriendsCompleteHandler, false, 0, true ); } private function getFriendsCompleteHandler( e:FacebookEvent ):void { if( e.error ) trace( "getFriendsCompleteHandler: " + e.error); var friendsData:GetFriendsData = e.data as GetFriendsData; //Iterate through the albumsResponseData.albumCollection to get the titles for( var i:uint = 0; i < friendsData.friends.length; i++ ){ var friendID:Number = friendsData.friends.getItemAt(i).uid; var facebookUser:FacebookUser = friendsData.friends.getUserById( friendID ); trace( "Facebook User Name: " + facebookUser.name ); } } /************************************** * Facebook Authentication **************************************/ private function fbLogin( method:Function ):void { currentMethod = method; fbSession = new FacebookSessionUtil( API_KEY, SECRET_KEY, loaderInfo ); fbSession.addEventListener( FacebookEvent.WAITING_FOR_LOGIN, fbWaitingForLoginHandler, false, 0, true ); fbSession.addEventListener( FacebookEvent.CONNECT, fbOnConnectHandler, false, 0, true ); fbook = fbSession.facebook; fbSession.login(); } private function isAuthenticated():Boolean { if( fbSession == null || !fbook.is_connected ) return false; return true; } /************************************** * Facebook Event Handlers **************************************/ private function fbOnConnectHandler( e:FacebookEvent ):void { trace( "You are logged into Facebook" ); //Continue where the user last left off before requiring Authentication currentMethod(); } private function fbWaitingForLoginHandler( e:FacebookEvent ):void { //The user has returned from the log-in page and are now clicking "OK" var alert:Alert = Alert.show( "Click 'OK' after you've logged in", "Logging In" ); alert.addEventListener( Event.CLOSE, alertCloseHandler, false, 0, true ); alert.addEventListener( Event.CLOSE, fbValidateLogin, false, 0, true ); } private function fbValidateLogin( e:Event ):void { fbSession.validateLogin(); } private function alertCloseHandler( e:Event ):void { }
Comments
Subscribe to comments
You need to login to post a comment.

i used this code to make an example, and i traced some where of code. and i get two trace, i don' t get others, one of them is in FBSessionWaiting Handlers; FacebookEvent "YOU R LOGGED INTO FACEBOOK" and the other one is FBLogin funciton; "fb login"
i dont get any message from isAuthenticated, handleGetFriendsComplete, and also i can not iterate friendsDAta.friends etc...
code doesnt give me any error, but nothing happens. only traces are on my monitor.
i also added an circle shape while FBSession Waiting Handler, i dont see my shape there.
well do i do something wrong? thank you.
...... i can not iterate friendsDAta.friends etc... i mean, it doenst trace facebook user name ...
...... i can not iterate friendsDAta.friends etc... i mean, it doenst trace facebook user name ...
friendID is String value and not Number like you put in your code, here in my facebook library. When i tryed get the first_name using GetFriends() the result is null. var friendID:Number = friendsData.friends.getItemAt(i).uid;
Some idea abou it ? Thanks and waiting. :)
pablodavi, You may need to cast your String object into a Number object. The easiest way to do that is simply wrap your code like this: Number( friendsData.friends.getItemAt(i).uid ).
Hi there, is it possible to connect to a users data if they are not logged into Facebook?
James Star from Team Hi
1.Does the FacebookSessionUtil check if you are already logged into Facebook? I want to test if a person is already logged into Facebook and then by-pass the login and extra browser; or is there something additional required that is tied to the application API ID?
Thanks
thanks