home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Multimedija / shufflr.air / ShufflrClient.swf / scripts / com / facebook / session / DesktopSession.as next >
Encoding:
Text File  |  2010-06-23  |  6.0 KB  |  177 lines

  1. package com.facebook.session
  2. {
  3.    import com.facebook.commands.auth.CreateToken;
  4.    import com.facebook.commands.auth.GetSession;
  5.    import com.facebook.commands.users.GetLoggedInUser;
  6.    import com.facebook.data.StringResultData;
  7.    import com.facebook.data.auth.GetSessionData;
  8.    import com.facebook.delegates.DesktopDelegate;
  9.    import com.facebook.delegates.IFacebookCallDelegate;
  10.    import com.facebook.delegates.VideoUploadDelegate;
  11.    import com.facebook.delegates.WebImageUploadDelegate;
  12.    import com.facebook.errors.FacebookError;
  13.    import com.facebook.events.FacebookEvent;
  14.    import com.facebook.facebook_internal;
  15.    import com.facebook.net.FacebookCall;
  16.    import com.facebook.net.IUploadPhoto;
  17.    import com.facebook.net.IUploadVideo;
  18.    import flash.net.URLRequest;
  19.    import flash.net.navigateToURL;
  20.    
  21.    public class DesktopSession extends WebSession implements IFacebookSession
  22.    {
  23.       protected var _auth_token:String;
  24.       
  25.       protected var loginRequest:IFacebookCallDelegate;
  26.       
  27.       protected var _waiting_for_login:Boolean = false;
  28.       
  29.       protected var _offline_access:Boolean = false;
  30.       
  31.       public function DesktopSession(param1:String, param2:String = null, param3:String = null)
  32.       {
  33.          super(param1,null);
  34.          this._is_connected = false;
  35.          this._secret = param2;
  36.          if(param3)
  37.          {
  38.             this._session_key = param3;
  39.          }
  40.       }
  41.       
  42.       override public function post(param1:FacebookCall) : IFacebookCallDelegate
  43.       {
  44.          rest_url = REST_URL;
  45.          if(param1 is IUploadPhoto)
  46.          {
  47.             return new WebImageUploadDelegate(param1,this);
  48.          }
  49.          if(param1 is IUploadVideo)
  50.          {
  51.             rest_url = VIDEO_URL;
  52.             return new VideoUploadDelegate(param1,this);
  53.          }
  54.          return new DesktopDelegate(param1,this);
  55.       }
  56.       
  57.       override public function get waiting_for_login() : Boolean
  58.       {
  59.          return this._waiting_for_login;
  60.       }
  61.       
  62.       protected function onLogin(param1:FacebookEvent) : void
  63.       {
  64.          var _loc2_:URLRequest = null;
  65.          var _loc3_:* = null;
  66.          param1.target.removeEventListener(FacebookEvent.COMPLETE,this.onLogin);
  67.          if(param1.success)
  68.          {
  69.             this._auth_token = (param1.data as StringResultData).value;
  70.             _loc2_ = new URLRequest();
  71.             _loc3_ = "?";
  72.             if(this._offline_access)
  73.             {
  74.                _loc3_ += "ext_perm=offline_access&";
  75.             }
  76.             _loc2_.url = login_url + _loc3_ + "api_key=" + api_key + "&v=" + api_version + "&auth_token=" + this._auth_token;
  77.             navigateToURL(_loc2_,"_blank");
  78.             this._waiting_for_login = true;
  79.             dispatchEvent(new FacebookEvent(FacebookEvent.WAITING_FOR_LOGIN));
  80.          }
  81.          else
  82.          {
  83.             this.onConnectionError(param1.error);
  84.          }
  85.       }
  86.       
  87.       protected function onConnectionError(param1:FacebookError) : void
  88.       {
  89.          _is_connected = false;
  90.          dispatchEvent(new FacebookEvent(FacebookEvent.CONNECT,false,false,false,null,param1));
  91.       }
  92.       
  93.       protected function tokenCreated() : void
  94.       {
  95.          navigateToURL(new URLRequest(login_url));
  96.       }
  97.       
  98.       override public function login(param1:Boolean) : void
  99.       {
  100.          this._offline_access = param1;
  101.          _session_key = null;
  102.          var _loc2_:FacebookCall = new CreateToken();
  103.          _loc2_.session = this;
  104.          _loc2_.facebook_internal::initialize();
  105.          _loc2_.addEventListener(FacebookEvent.COMPLETE,this.onLogin);
  106.          this.post(_loc2_);
  107.       }
  108.       
  109.       protected function onVerifyLogin(param1:FacebookEvent) : void
  110.       {
  111.          var _loc2_:FacebookEvent = new FacebookEvent(FacebookEvent.CONNECT);
  112.          _loc2_.success = param1.success;
  113.          if(param1.success)
  114.          {
  115.             facebook_internal::_uid = (param1.data as StringResultData).value;
  116.             _loc2_.data = param1.data;
  117.             _is_connected = true;
  118.          }
  119.          else
  120.          {
  121.             _loc2_.error = param1.error;
  122.             _is_connected = false;
  123.          }
  124.          dispatchEvent(_loc2_);
  125.       }
  126.       
  127.       override public function verifySession() : void
  128.       {
  129.          var _loc1_:FacebookCall = null;
  130.          if(_session_key)
  131.          {
  132.             _loc1_ = new GetLoggedInUser();
  133.             _loc1_.session = this;
  134.             _loc1_.facebook_internal::initialize();
  135.             _loc1_.addEventListener(FacebookEvent.COMPLETE,this.onVerifyLogin,false,0,true);
  136.             this.post(_loc1_);
  137.             dispatchEvent(new FacebookEvent(FacebookEvent.VERIFYING_SESSION));
  138.          }
  139.          else
  140.          {
  141.             _is_connected = false;
  142.             dispatchEvent(new FacebookEvent(FacebookEvent.CONNECT));
  143.          }
  144.       }
  145.       
  146.       protected function validateSessionReply(param1:FacebookEvent) : void
  147.       {
  148.          var _loc2_:GetSessionData = null;
  149.          if(param1.success)
  150.          {
  151.             _loc2_ = param1.data as GetSessionData;
  152.             facebook_internal::_uid = _loc2_.uid;
  153.             this._session_key = _loc2_.session_key;
  154.             this._expires = _loc2_.expires;
  155.             this._secret = _loc2_.secret == null || _loc2_.secret == "" ? this._secret : _loc2_.secret;
  156.             _is_connected = true;
  157.             dispatchEvent(new FacebookEvent(FacebookEvent.CONNECT,false,false,true,_loc2_));
  158.          }
  159.          else
  160.          {
  161.             this.onConnectionError(param1.error);
  162.          }
  163.       }
  164.       
  165.       override public function refreshSession() : void
  166.       {
  167.          this._waiting_for_login = false;
  168.          var _loc1_:GetSession = new GetSession(this._auth_token);
  169.          _loc1_.session = this;
  170.          _loc1_.facebook_internal::initialize();
  171.          _loc1_.addEventListener(FacebookEvent.COMPLETE,this.validateSessionReply);
  172.          this.post(_loc1_);
  173.       }
  174.    }
  175. }
  176.  
  177.