public virtual ActionResult Login()
        {
            //get current application name
            string oAppName = base.GetAppNameByDomain(base.ReturnUrl);

            ViewBag.AppName = oAppName;
            //get fb client
            DotNetOpenAuth.ApplicationBlock.FacebookClient FBClient = GetFBClient(oAppName);

            //validate autentication
            DotNetOpenAuth.OAuth2.IAuthorizationState authorization = FBClient.ProcessUserAuthorization();

            if (authorization == null)
            {
                //user is not login
                FBClient.RequestUserAuthorization(scope: new[] {
                    DotNetOpenAuth.ApplicationBlock.FacebookClient.Scopes.UserAboutMe,
                    DotNetOpenAuth.ApplicationBlock.FacebookClient.Scopes.Email,
                    DotNetOpenAuth.ApplicationBlock.FacebookClient.Scopes.UserBirthday
                });
            }
            else
            {
                //get social user info
                DotNetOpenAuth.ApplicationBlock.IOAuth2Graph oauth2Graph = FBClient.GetGraph(
                    authorization,
                    new[] {
                    DotNetOpenAuth.ApplicationBlock.FacebookGraph.Fields.Defaults,
                    DotNetOpenAuth.ApplicationBlock.FacebookGraph.Fields.Email,
                    DotNetOpenAuth.ApplicationBlock.FacebookGraph.Fields.Picture,
                    DotNetOpenAuth.ApplicationBlock.FacebookGraph.Fields.Birthday
                });

                //create model login
                SessionManager.Models.Auth.User UserToLogin = base.GetUserToLogin(oauth2Graph, SessionManager.Models.Auth.enumProvider.Facebook);

                //login user
                UserToLogin = base.LoginUser(UserToLogin);

                //Add Log
                LogManager.ClientLog.AddLog(new LogManager.Models.LogModel()
                {
                    User        = UserToLogin.UserPublicId,
                    Application = Auth.Interfaces.Constants.C_ApplicationName,
                    Source      = Request.Url.ToString(),
                    IsSuccess   = true,
                    LogObject   = UserToLogin,
                });

                //return to site
                Response.Redirect(base.ReturnUrl.ToString());
            }

            return(View());
        }
        public virtual ActionResult LoginCallBack()
        {
            //get return url
            Uri oReturnUrl = base.ReturnUrl;

            //get current application name
            string oAppName = base.GetAppNameByDomain(base.ReturnUrl);

            ViewBag.AppName = oAppName;
            //get fb client
            DotNetOpenAuth.ApplicationBlock.GoogleClient GMClient = GetGMClient(oAppName);

            //validate autentication
            DotNetOpenAuth.OAuth2.IAuthorizationState authorization = GMClient.ProcessUserAuthorization();

            if (authorization != null)
            {
                DotNetOpenAuth.ApplicationBlock.IOAuth2Graph oauth2Graph = GMClient.GetGraph(authState: authorization);

                //create model login
                SessionManager.Models.Auth.User UserToLogin = base.GetUserToLogin(oauth2Graph, SessionManager.Models.Auth.enumProvider.Google);

                //login user
                UserToLogin = base.LoginUser(UserToLogin);

                //Add Log
                LogManager.ClientLog.AddLog(new LogManager.Models.LogModel()
                {
                    User        = UserToLogin.UserPublicId,
                    Application = Auth.Interfaces.Constants.C_ApplicationName,
                    Source      = Request.Url.ToString(),
                    IsSuccess   = true,
                    LogObject   = UserToLogin,
                });

                //return to site
                Response.Redirect(oReturnUrl.ToString());
            }

            return(View());
        }
        public virtual ActionResult Login(string UrlRetorno)
        {
            //get return url
            Uri oReturnUrl = base.GetReturnUrl(UrlRetorno);
            //get current application name
            string oAppName = base.GetAppNameByDomain(oReturnUrl);

            ViewBag.AppName = oAppName;
            //get fb client
            DotNetOpenAuth.ApplicationBlock.GoogleClient GMClient = GetGMClient(oAppName);

            //validate autentication
            DotNetOpenAuth.OAuth2.IAuthorizationState authorization = GMClient.ProcessUserAuthorization();

            if (authorization == null)
            {
                //preserve return url before request
                base.ReturnUrl = oReturnUrl;

                //user is not login
                GMClient.RequestUserAuthorization(scope: new[] {
                    DotNetOpenAuth.ApplicationBlock.GoogleClient.Scopes.PlusMe,
                    DotNetOpenAuth.ApplicationBlock.GoogleClient.Scopes.UserInfo.Email,
                    DotNetOpenAuth.ApplicationBlock.GoogleClient.Scopes.UserInfo.Profile
                },
                                                  returnTo: new Uri
                                                      (Request.Url.GetLeftPart(UriPartial.Authority).ToLower().TrimEnd('/') +
                                                      Url.Action(MVC.GoogleLogin.ActionNames.LoginCallBack)));
            }
            else
            {
                return(RedirectToAction(MVC.GoogleLogin.ActionNames.LoginCallBack));
            }

            return(View());
        }