public AuthorizeState Authorize(string returnUrl)
        {
            //Sleep for 15 seconds as a workaround for a twitter bug. :(
            //resolve this issue because it's blocking the entire site
            //Thread.Sleep(new TimeSpan(0, 0, 0, 15));


            MvcAuthorizer.CompleteAuthorization(GenerateCallbackUri());

            if (!MvcAuthorizer.IsAuthorized)
            {
                return new AuthorizeState(returnUrl, OpenAuthenticationStatus.RequiresRedirect) { Result = MvcAuthorizer.BeginAuthorization() };
            }

            var parameters = new OAuthAuthenticationParameters(Provider.SystemName)
            {
                ExternalIdentifier = MvcAuthorizer.OAuthTwitter.OAuthToken,
                ExternalDisplayIdentifier = MvcAuthorizer.ScreenName,
                OAuthToken = MvcAuthorizer.OAuthTwitter.OAuthToken,
                OAuthAccessToken = MvcAuthorizer.OAuthTwitter.OAuthTokenSecret,
            };

            var result = _authorizer.Authorize(parameters);

            var tempReturnUrl = _httpContext.Request.QueryString["?ReturnUrl"];
            if (!string.IsNullOrEmpty(tempReturnUrl) && string.IsNullOrEmpty(returnUrl))
            {
                returnUrl = tempReturnUrl;
            }

            return new AuthorizeState(returnUrl, result);
        }
        public ITwitterAuthorizer GetAuthorizer(Customer customer)
        {
            var parameters = new OAuthAuthenticationParameters(Provider.SystemName);
            var identifier = _openAuthenticationService
                             .GetExternalIdentifiersFor(customer)
                             .Where(o => o.ProviderSystemName == parameters.ProviderSystemName)
                             .ToList()
                             .FirstOrDefault();

            if (identifier != null)
            {
                MvcAuthorizer.Credentials.OAuthToken  = identifier.OAuthToken;
                MvcAuthorizer.Credentials.AccessToken = identifier.OAuthAccessToken;

                return(MvcAuthorizer);
            }
            return(null);
        }
        public AuthorizeState Authorize(string returnUrl)
        {
            //Sleep for 15 seconds as a workaround for a twitter bug. :(
            //resolve this issue because it's blocking the entire site
            //Thread.Sleep(new TimeSpan(0, 0, 0, 15));


            MvcAuthorizer.CompleteAuthorization(GenerateCallbackUri());

            if (!MvcAuthorizer.IsAuthorized)
            {
                return(new AuthorizeState(returnUrl, OpenAuthenticationStatus.RequiresRedirect)
                {
                    Result = MvcAuthorizer.BeginAuthorization()
                });
            }

            var parameters = new OAuthAuthenticationParameters(Provider.SystemName)
            {
                ExternalIdentifier        = MvcAuthorizer.OAuthTwitter.OAuthToken,
                ExternalDisplayIdentifier = MvcAuthorizer.ScreenName,
                OAuthToken       = MvcAuthorizer.OAuthTwitter.OAuthToken,
                OAuthAccessToken = MvcAuthorizer.OAuthTwitter.OAuthTokenSecret,
            };

            var result = _authorizer.Authorize(parameters);

            var tempReturnUrl = _httpContext.Request.QueryString["?ReturnUrl"];

            if (!string.IsNullOrEmpty(tempReturnUrl) && string.IsNullOrEmpty(returnUrl))
            {
                returnUrl = tempReturnUrl;
            }

            return(new AuthorizeState(returnUrl, result));
        }
        public ITwitterAuthorizer GetAuthorizer(Customer customer)
        {
            var parameters = new OAuthAuthenticationParameters(Provider.SystemName);
            var identifier = _openAuthenticationService
                .GetExternalIdentifiersFor(customer)
                .Where(o => o.ProviderSystemName == parameters.ProviderSystemName)
                .ToList()
                .FirstOrDefault();

            if (identifier != null)
            {
                MvcAuthorizer.Credentials.OAuthToken = identifier.OAuthToken;
                MvcAuthorizer.Credentials.AccessToken = identifier.OAuthAccessToken;

                return MvcAuthorizer;
            }
            return null;
        }