예제 #1
0
        public override void Do(ActionArgs e)
        {
            Begin(e);
            ActionFacebookLoginArgs arg = e as ActionFacebookLoginArgs;

            if (precheckToDo(e))
            {
                var dispatcher = ActionHelper.getCurrentUIThread();
                dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    Authenticate(arg);
                });

                /*if (!FacebookClient.Instance.IsUserLogedin()) {
                 *  var dispatcher = ActionHelper.getCurrentUIThread();
                 *  dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                 *  {
                 *      Authenticate(arg);
                 *
                 *  });
                 * } else {
                 *  arg.IsCancelByLogedin = true;
                 *  Done(arg);
                 * }*/
            }
            else
            {
                Cancel(e);
            }
        }
예제 #2
0
 static public void login(ServerStream stream, Actions.DelegateBegin onBegin, Actions.DelegateDone onDone, Actions.DelegateCancel onCancel)
 {
     Actions.ActionFacebookLoginArgs arg            = new Actions.ActionFacebookLoginArgs(AppObject.RootLayout);
     Actions.ActionFacebookLogin     action_fblogin = new Actions.ActionFacebookLogin();
     _stream_wating.Add(action_fblogin, stream);
     try {
         action_fblogin.OnBegin  += onBegin;
         action_fblogin.OnDone   += action_fblogin_stream_OnDone;
         action_fblogin.OnDone   += onDone;
         action_fblogin.OnCancel += action_fblogin_stream_OnCancel;
         action_fblogin.OnCancel += onCancel;
         stream.Status            = (int)ServerStreamStatus.STREAM_STATUS_REQUESTING;
         AppObject.PopupOfAction.Add(new Actions.ActionArgLinker(action_fblogin, arg));
         ////ApplicationInfomation.onPopupOn();
         action_fblogin.Do(arg);
     } catch (Exception ex) {
         stream.Status = (int)ServerStreamStatus.STREAM_STATUS_ERROR;
     }
 }
예제 #3
0
        public override void Cancel(ActionArgs e)
        {
            ActionFacebookLoginArgs arg = e as ActionFacebookLoginArgs;

            if (arg != null)
            {
                try {
                    arg.Result = null;
                } catch (Exception ex) {
                    //throw ex;
                }
            }
            else
            {
                Exception ex = new Exception("Facebook login dialog error");
                //throw ex;
            }
            base.Cancel(e);
        }
예제 #4
0
 static private void action_fblogin_stream_OnDone(object sender, Actions.ActionArgs e)
 {
     try {
         Actions.ActionFacebookLoginArgs fbarg = e as Actions.ActionFacebookLoginArgs;
         ActionFacebookLoginArgs         arg   = e as ActionFacebookLoginArgs;
         foreach (ActionArgLinker link in AppObject.PopupOfAction)
         {
             if (link.AttachArg == arg)
             {
                 AppObject.PopupOfAction.Remove(link);
                 break;
             }
         }
         if (fbarg != null && (fbarg.IsCancelByLogedin || (fbarg.Result != null && fbarg.Result.IsSuccess)))
         {
             if (fbarg.IsCancelByLogedin)
             {
                 ServerStream svstream = _stream_wating[(Actions.Action)sender];
                 svstream.Status = (int)ServerStreamStatus.STREAM_STATUS_RESPONSED;
                 ////ApplicationInfomation.onPopupOff();
             }
             else
             {
                 PineShap.FacebookUtils.FacebookClient.Instance.Token        = fbarg.Result.Token;
                 PineShap.FacebookUtils.FacebookClient.Instance.TokenExprite = fbarg.Result.TokenExprite;
                 PineShap.FacebookUtils.FacebookClient.Instance.SaveUserData();
                 ServerStream svstream = _stream_wating[(Actions.Action)sender];
                 action_fbinfo_stream_do(svstream);
             }
         }
         else
         {
             ServerStream svstream = _stream_wating[(Actions.Action)sender];
             svstream.Status = (int)ServerStreamStatus.STREAM_STATUS_ERROR;
             _stream_wating.Remove((Actions.Action)sender);
             ////ApplicationInfomation.onPopupOff();
         }
     } catch (Exception ex) {
     }
 }
예제 #5
0
        private async Task Authenticate(ActionFacebookLoginArgs arg)
        {
            string message = String.Empty;

            try
            {
                session = await FacebookManager.SessionClient.LoginAsync("basic_info,publish_actions,user_about_me,read_stream,offline_access");

                string state = session.State;
                if (session.AccessToken.Length > 0)
                {
                    state = session.State;
                    FacebookManager.setToken(session.AccessToken);
                    arg.Result = new LoginFacebookDialogCompleteArgs(true, session.AccessToken, session.Expires.ToString());
                    Done(arg);
                }
            }
            catch (InvalidOperationException e)
            {
                Cancel(arg);
            }
        }
예제 #6
0
        public override bool precheckToDo(ActionArgs e)
        {
            ActionFacebookLoginArgs arg = e as ActionFacebookLoginArgs;

            return(arg.ParentLayout != null);
        }