public ActionResult GoogleCallbackAction()
        {
            var googleContext = new GoogleAuthRequestProcessedContext();

            var googleInputParam = new GoogleAuthRequestProcessedParameter
            {
                TokenManager =
                    HttpContext.Application["GoogleTokenManager"] as InMemoryTokenManager
            };

            googleContext.Execute(() => googleInputParam);

            SocialUserInformation userData = googleContext.ReturnResult;

            SignIn(userData);

            return(GetHomeAction());
        }
        public ActionResult TwitterCallbackAction()
        {
            var twitterContext = new TwitterAuthRequestProcessedContext();

            var twitterInputParam = new TwitterAuthRequestProcessedParameter
            {
                TokenManager =
                    HttpContext.Application["TwitterTokenManager"] as InMemoryTokenManager
            };

            twitterContext.Execute(() => twitterInputParam);

            SocialUserInformation userData = twitterContext.ReturnResult;

            SignIn(userData);

            return(GetHomeAction());
        }
        /// <summary>
        ///   This method using for callback when we use Facebook or Windows Live for authetication
        /// </summary>
        /// <returns> </returns>
        public ActionResult FacebookCallbackAction()
        {
            var facebookContext = new FacebookAuthRequestProcessedContext();

            facebookContext.Execute(() => null);
            SocialUserInformation userData = facebookContext.ReturnResult;

            if (userData == null)
            {
                TempData["authError"] =
                    "Authentication has failed.";

                return
                    (RedirectToAction("LogOn"));
            }

            // TODO: have to store user information to database here
            // ...

            SignIn(userData);

            return(GetHomeAction());
        }
 private void SignIn(SocialUserInformation userData)
 {
     _formsAuthenticationService.SignIn(userData.UserName, userData, false);
 }