private void DoTwitterLogin(HttpContext context, string returnUrl)
        {
            if (TwitterConsumer.IsTwitterConsumerConfigured)
            {
                var token = context.Request["oauth_token"];
                if (string.IsNullOrEmpty(token))
                {
                    var request = TwitterConsumer.StartSignInWithTwitter(false);
                    request.Send();
                }
                else
                {
                    string screenName;
                    int    userId;
                    string accessToken;
                    if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userId, out accessToken))
                    {
                        //Sucess. Get information
                        var info    = TwitterConsumer.GetUserInfo(userId, accessToken);
                        var profile = UniversalProfile.ProfileFromTwitter(info);

                        RedirectToReturnUrl(context, returnUrl, profile);
                    }
                    else
                    {
                        RedirectToReturnUrl(context, returnUrl, UniversalProfile.FromError(new Exception("Login failed")));
                    }
                }
            }
        }
예제 #2
0
        public LoginProfile ProcessAuthoriztion(HttpContext context, IDictionary <string, string> @params)
        {
            var token = context.Request["oauth_token"];

            if (string.IsNullOrEmpty(token))
            {
                var request = TwitterConsumer.StartSignInWithTwitter(TwitterSignIn, false);
                request.Send();
            }
            else
            {
                string screenName;
                int    userId;
                string accessToken;
                if (TwitterConsumer.TryFinishSignInWithTwitter(TwitterSignIn, out screenName, out userId, out accessToken))
                {
                    //Sucess. Get information
                    var info    = TwitterConsumer.GetUserInfo(TwitterSignIn, userId, accessToken);
                    var profile = ProfileFromTwitter(info);
                    return(profile);
                }
                return(LoginProfile.FromError(new Exception("Login failed")));
            }


            return(null);
        }
        private void HandleTwitterResponse()
        {
            string screenName;
            int    userId;

            if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userId))
            {
                AuthenticatedUser(screenName, "", screenName, userId.ToString(CultureInfo.CurrentCulture), "Twitter");
            }
        }
예제 #4
0
        public BasicUserData ProcessAuthRequest(ProcessAuthenticationContext context)
        {
            string screenName;
            int    userId;

            var consumer = new TwitterConsumer(context.SessionStorage);

            return
                (consumer.TryFinishSignInWithTwitter(out screenName, out userId)
                    ? new BasicUserData
            {
                UserId = userId.ToString(CultureInfo.InvariantCulture),
                UserName = screenName,
                PictureUrl =
                    string.Format("http://api.twitter.com/1/users/profile_image/{0}.png", screenName)
            }
                    : null);
        }
예제 #5
0
        public ActionResult Index()
        {
            if (TwitterConsumer.IsTwitterConsumerConfigured)
            {
                string screenName;
                int    userId;
                string accessToken;
                if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userId, out accessToken))
                {
                    var user = Session.Query <User>().Search(x => x.TwitterId, userId.ToString()).SingleOrDefault();

                    if (user == null)
                    {
                        user              = new User();
                        user.Id           = Guid.NewGuid();
                        user.TwitterId    = userId.ToString();
                        user.RegisteredOn = DateTime.UtcNow;
                    }

                    user.Name             = screenName;
                    user.OAuthAccessToken = accessToken;
                    user.LastSignIn       = DateTime.UtcNow;

                    Session.Store(user);
                    Session.SaveChanges();

                    FormsAuthentication.SetAuthCookie(screenName, false);

                    if (HttpContext.Request.UrlReferrer != null && string.IsNullOrWhiteSpace(HttpContext.Request.UrlReferrer.AbsoluteUri) == false)
                    {
                        return(Redirect(HttpContext.Request.UrlReferrer.AbsoluteUri));
                    }

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    TwitterConsumer.StartSignInWithTwitter(false).Send();
                }
            }

            return(RedirectToAction("Index", "Home"));
        }
예제 #6
0
        public ActionResult RsvpTwitterFinish(Guid id)
        {
            string screenName;
            int    userId;

            if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userId))
            {
                var dinner = dinnerReadModel.GetDinnerById(id);

                // NOTE: The alias we've generated for this user isn't guaranteed to be unique.
                string alias = "@" + screenName;
                if (!dinner.IsUserRegistered(alias))
                {
                    var rsvpForDinnerCommand = new RsvpForDinnerCommand {
                        DinnerId = id, AttendeeName = alias
                    };
                    commandService.RsvpForDinner(rsvpForDinnerCommand);
                }
            }

            return(RedirectToAction("Details", "Dinners", new { id }));
        }
예제 #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (TwitterConsumer.IsTwitterConsumerConfigured)
            {
                this.MultiView1.ActiveViewIndex = 1;

                if (!IsPostBack)
                {
                    string screenName;
                    int    userId;
                    if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userId))
                    {
                        this.loggedInPanel.Visible = true;
                        this.loggedInName.Text     = screenName;

                        // In a real app, the Twitter username would likely be used
                        // to log the user into the application.
                        ////FormsAuthentication.RedirectFromLoginPage(screenName, false);
                    }
                }
            }
        }
예제 #8
0
        // GET: /RSVP/RsvpTwitterFinish

        public ActionResult RsvpTwitterFinish(int id)
        {
            string screenName;
            int    userId;

            if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userId))
            {
                var    dinnerRepository = new DinnerRepository();
                Dinner dinner           = dinnerRepository.GetDinner(id);

                // NOTE: The alias we've generated for this user isn't guaranteed to be unique.
                string alias = "@" + screenName;
                if (!dinner.IsUserRegistered(alias))
                {
                    RSVP rsvp = new RSVP();
                    rsvp.AttendeeName = alias;

                    dinner.RSVPs.Add(rsvp);
                    dinnerRepository.Save();
                }
            }

            return(RedirectToAction("Details", "Dinners", new { id = id }));
        }
예제 #9
0
        //
        // GET: /Account/LogOn

        public ActionResult LogOn()
        {
            string screenName;
            int    userID;

            if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userID))
            {
                string returnUrl = Request.QueryString["ReturnUrl"];
                FormsAuthentication.SetAuthCookie(screenName, false);
                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 &&
                    returnUrl.StartsWith("/") &&
                    !returnUrl.StartsWith("//") &&
                    !returnUrl.StartsWith("/\\"))
                {
                    return(Redirect(returnUrl));
                }
                else
                {
                    return(RedirectToAction("Index", "Home"));
                }
            }

            return(TwitterConsumer.StartSignInWithTwitter(true).AsActionResult());
        }