private async Task ValidSubmit()
        {
            var loginCancelEventArgs = new LoginCancelEventArgs();
            await OnLoggingIn.InvokeAsync(loginCancelEventArgs);

            if (loginCancelEventArgs.Cancel)
            {
                Model.Password = string.Empty;
            }
            else
            {
                var authenticateEventArgs = new AuthenticateEventArgs();
                await OnAuthenticate.InvokeAsync(authenticateEventArgs);

                if (authenticateEventArgs.Authenticated)
                {
                    await OnLoggedIn.InvokeAsync(EventArgs.Empty);

                    if (!string.IsNullOrEmpty(DestinationPageUrl))
                    {
                        NavigationManager.NavigateTo(DestinationPageUrl);
                    }

                    ShowFailureText = false;
                }
                else
                {
                    await OnLoginError.InvokeAsync(EventArgs.Empty);

                    Model.Password  = string.Empty;
                    ShowFailureText = true;
                }
            }
        }
예제 #2
0
        private void RaiseOnResponse(string message)
        {
            var rawMessage = message.Split(':');
            var type       = rawMessage[0];

            if (type.Contains("error"))
            {
                OnLoginError?.Invoke(rawMessage[2]);
                return;
            }

            if (type.Contains("shutdown"))
            {
                OnLoginError?.Invoke(rawMessage[2]);
                return;
            }

            if (type.Contains("login"))
            {
                OnLogin?.Invoke();
                return;
            }

            if (type.Contains("logout"))
            {
                DestroyRunTask();
                OnLogout?.Invoke();
                return;
            }

            if (type.Contains("message"))
            {
                OnMessage?.Invoke(rawMessage[2]);
                return;
            }

            if (type.Contains("members"))
            {
                OnMembers?.Invoke(rawMessage[2]);
                return;
            }
        }
        private void OnLoginHandler(LoginManagerLoginResult result, NSError error)
        {
            if (error != null || result == null || result.IsCancelled)
            {
                if (result != null && result.IsCancelled)
                {
                    OnLoginError?.Invoke(new Exception("Login Canceled."));
                }

                if (error != null)
                {
                    OnLoginError?.Invoke(new Exception(error.LocalizedDescription));
                }
            }
            else
            {
                var request = new GraphRequest("me", new NSDictionary("fields", "id, first_name, email, last_name, picture.width(500).height(500)"));
                request.Start(OnRequestHandler);
            }
        }
 public void Logout()
 {
     OnLoginError?.Invoke(new NotImplementedException());
 }
예제 #5
0
 public void OnError(FacebookException error)
 {
     OnLoginError?.Invoke(new System.Exception(error.LocalizedMessage));
 }
예제 #6
0
 public void OnCancel()
 {
     OnLoginError?.Invoke(new System.Exception("Login Canceled."));
 }
        private void OnRequestHandler(GraphRequestConnection connection, NSObject result, NSError error)
        {
            if (error != null || result == null)
            {
                OnLoginError?.Invoke(new Exception(error.LocalizedDescription));
            }
            else
            {
                var id         = string.Empty;
                var first_name = string.Empty;
                var email      = string.Empty;
                var last_name  = string.Empty;
                var url        = string.Empty;

                try
                {
                    id = result.ValueForKey(new NSString("id"))?.ToString();
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message);
                }

                try
                {
                    first_name = result.ValueForKey(new NSString("first_name"))?.ToString();
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message);
                }

                try
                {
                    email = result.ValueForKey(new NSString("email"))?.ToString();
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message);
                }

                try
                {
                    last_name = result.ValueForKey(new NSString("last_name"))?.ToString();
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message);
                }

                try
                {
                    url = ((result.ValueForKey(new NSString("picture")) as NSDictionary).ValueForKey(new NSString("data")) as NSDictionary).ValueForKey(new NSString("url")).ToString();
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message);
                }

                //Grab the user and send the success event
                User = new FacebookUser(id, AccessToken.CurrentAccessToken.TokenString, first_name, last_name, email, url);
                OnLoginSuccess?.Invoke(User);
            }
        }