private void btnStartAuthorization_Click(object sender, EventArgs e)
        {
            _oAuth = new OAuthTwitter
            {
                ConsumerKey    = _classRegistry.Config.Twitter.ConsumerKey,
                ConsumerSecret = _classRegistry.Config.Twitter.ConsumerSecret
            };

            _classRegistry.Config.Twitter.Pin         = string.Empty;
            _classRegistry.Config.Twitter.Token       = string.Empty;
            _classRegistry.Config.Twitter.TokenSecret = string.Empty;

            var oAuthLink = _oAuth.AuthorizationLinkGet();

            try
            {
                Process.Start(oAuthLink);
                tbTwitterPIN.Text           = string.Empty;
                tbTwitterPIN.Enabled        = true;
                lblTwitterPIN.Enabled       = true;
                btnTwitterAuthorize.Enabled = true;
            }
            catch
            {
                tbTwitterPIN.Text           = string.Empty;
                lblTwitterPIN.Enabled       = false;
                tbTwitterPIN.Enabled        = false;
                btnTwitterAuthorize.Enabled = false;
                MessageBox.Show("An error occurred trying to authenticate. Check your network settings and browser config, and try again.", "uTorrent Notifier - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #2
0
        public void FilterRequestParameters_Splits_Url_Properly()
        {
            var oaTwit  = new OAuthTwitter();
            var fullUrl = new Uri("http://www.mySite.com?oauth_token=123&p1=v1");

            string filteredUrl = oaTwit.FilterRequestParameters(fullUrl);

            Assert.Equal("http://www.mysite.com/?p1=v1", filteredUrl);
        }
Exemple #3
0
        /// <summary>
        /// Re-tweets Message thru the Twitter API
        /// </summary>
        /// <param name="sender">
        /// The source of the event.
        /// </param>
        /// <param name="e">
        /// The <see cref="System.EventArgs"/> instance containing the event data.
        /// </param>
        protected void Retweet_Click(object sender, EventArgs e)
        {
            var twitterName = this.Get <YafBoardSettings>().TwitterUserName.IsSet()
                                  ? $"@{this.Get<YafBoardSettings>().TwitterUserName} "
                                  : string.Empty;

            // process message... clean html, strip html, remove bbcode, etc...
            var twitterMsg = BBCodeHelper
                             .StripBBCode(HtmlHelper.StripHtml(HtmlHelper.CleanHtmlString((string)this.DataRow["Message"])))
                             .RemoveMultipleWhitespace();

            var topicUrl = YafBuildLink.GetLinkNotEscaped(
                ForumPages.posts,
                true,
                "m={0}#post{0}",
                this.DataRow["MessageID"]);

            // Send Re-tweet Directly thru the Twitter API if User is Twitter User
            if (Config.TwitterConsumerKey.IsSet() && Config.TwitterConsumerSecret.IsSet() &&
                this.Get <IYafSession>().TwitterToken.IsSet() &&
                this.Get <IYafSession>().TwitterTokenSecret.IsSet() &&
                this.Get <IYafSession>().TwitterTokenSecret.IsSet() &&
                this.PageContext.IsTwitterUser)
            {
                var auth = new OAuthTwitter
                {
                    ConsumerKey    = Config.TwitterConsumerKey,
                    ConsumerSecret = Config.TwitterConsumerSecret,
                    Token          = this.Get <IYafSession>().TwitterToken,
                    TokenSecret    = this.Get <IYafSession>().TwitterTokenSecret
                };

                var tweets = new TweetAPI(auth);

                tweets.UpdateStatus(
                    TweetAPI.ResponseFormat.json,
                    this.Server.UrlEncode(
                        string.Format("RT {1}: {0} {2}", twitterMsg.Truncate(100), twitterName, topicUrl)),
                    string.Empty);
            }
            else
            {
                this.Get <HttpResponseBase>().Redirect(
                    $"http://twitter.com/share?url={this.Server.UrlEncode(topicUrl)}&text={this.Server.UrlEncode(s: $"RT {twitterName}: {twitterMsg.Truncate(100)}")}");
            }
        /// <summary>
        /// Performs authentication asynchronously, managing entire OAuth workflow
        /// </summary>
        /// <returns>TwitterAuthProviderUser with ScreenName and ID</returns>
        internal async Task <TwitterAuthProviderUser> AuthenticateAsync()
        {
            string callbackStr = OAuthTwitter.FilterRequestParameters(callback);
            string link        = OAuthTwitter.AuthorizationLinkGet(OAuthRequestTokenUrl, OAuthAuthorizeUrl, callbackStr, false, AuthAccessType);

            WebAuthenticationResult webAuthenticationResult =
                await WebAuthenticationBroker.AuthenticateAsync(
                    WebAuthenticationOptions.None,
                    new Uri(link),
                    callback);

            if (webAuthenticationResult.ResponseStatus == WebAuthenticationStatus.Success)
            {
                var authCallbackUri = new Uri(webAuthenticationResult.ResponseData);

                string verifier = OAuthTwitter.GetUrlParamValue(authCallbackUri.Query, "oauth_verifier");

                string oAuthToken = OAuthTwitter.GetUrlParamValue(authCallbackUri.Query, "oauth_token");

                string screenName;
                string userID;
                OAuthTwitter.AccessTokenGet(oAuthToken, verifier, OAuthAccessTokenUrl, string.Empty, out screenName, out userID);

                ScreenName = screenName;
                UserId     = userID;

                OAuthToken       = OAuthTwitter.OAuthToken;
                OAuthTokenSecret = OAuthTwitter.OAuthTokenSecret;

                return(new TwitterAuthProviderUser
                {
                    UserName = screenName,
                    Id = userID
                });
            }

            return(new TwitterAuthProviderUser
            {
                UserName = "",
                Id = ""
            });
        }
Exemple #5
0
        public void GetOAuthAuthorizationHeaderTest()
        {
            OAuthTwitter target = new OAuthTwitter();

            target.OAuthConsumerKey    = "5";
            target.OAuthConsumerSecret = "7";
            target.OAuthToken          = "3";
            target.OAuthTokenSecret    = "9";
            string url = "http://twitter.com";
            Dictionary <string, string> parameters = new Dictionary <string, string>
            {
                { "first", "one" },
                { "second", "two" }
            };
            string expected = "OAuth realm=\"http://twitter.com/\"";
            string actual;

            actual = target.GetOAuthAuthorizationHeader(url, parameters);
            Assert.IsTrue(actual.StartsWith(expected));
        }
Exemple #6
0
        /// <summary>
        /// Gets the twitter user info as JSON string for the hover cards
        /// </summary>
        /// <param name="context">The context.</param>
        public void GetTwitterUserInfo([NotNull] HttpContext context)
        {
            try
            {
                var twitterName = context.Request.QueryString.GetFirstOrDefault("twitterinfo");

                if (!Config.IsTwitterEnabled)
                {
                    context.Response.Write(
                        "Error: Resource has been moved or is unavailable. Please contact the forum admin.");

                    return;
                }

                var authTwitter = new OAuthTwitter
                {
                    ConsumerKey    = Config.TwitterConsumerKey,
                    ConsumerSecret = Config.TwitterConsumerSecret,
                    Token          = Config.TwitterToken,
                    TokenSecret    = Config.TwitterTokenSecret
                };

                var tweetApi = new TweetAPI(authTwitter);

                context.Response.Write(tweetApi.UsersLookupJson(twitterName));

                HttpContext.Current.ApplicationInstance.CompleteRequest();
            }
            catch (Exception x)
            {
                this.Get <ILogger>().Log(BoardContext.Current.PageUserID, this, x, EventLogTypes.Information);

                context.Response.Write(
                    "Error: Resource has been moved or is unavailable. Please contact the forum admin.");
            }
        }
        public ActionResult twitter_auth(string oauth_token, string oauth_verifier)
        {
            ElmcityApp.logger.LogHttpRequest(this.ControllerContext);
            var oauth_twitter = new OAuthTwitter(consumer_key: settings["twitter_auth_consumer_key"], consumer_secret: settings["twitter_auth_consumer_secret"]);

            var auth = Authentications.AuthenticationList.Find(x => x.mode == Authentication.Mode.twitter);

            if (Request.Cookies[auth.cookie_name.ToString()] == null)
            {
                var cookie = new HttpCookie(auth.cookie_name.ToString(), DateTime.UtcNow.Ticks.ToString());
                Response.SetCookie(cookie);
            }

            if (oauth_token == null)
            {
                var link = oauth_twitter.AuthorizationLinkGet();
                return new RedirectResult(link);
            }

            if (oauth_token != null)
            {
                var session_id = Request.Cookies[auth.cookie_name.ToString()].Value;
                oauth_twitter.token = oauth_token;
                string response = oauth_twitter.oAuthWebRequest(OAuthTwitter.Method.GET, OAuthTwitter.ACCESS_TOKEN, oauth_verifier, String.Empty);
                if (response.Length > 0)
                {
                    System.Collections.Specialized.NameValueCollection qs = HttpUtility.ParseQueryString(response);
                    var user_id = qs[auth.trusted_field.ToString()];
                    Authentication.RememberUser(Request.UserHostAddress, Request.UserHostName, session_id, auth.mode.ToString(), auth.trusted_field.ToString(), user_id);
                }
            }

            return new RedirectResult("/");
        }
Exemple #8
0
        public ActionResult twitter_auth(string oauth_token, string oauth_verifier)
        {
            ElmcityApp.logger.LogHttpRequest(this.ControllerContext);

            try
            {
                var oauth_twitter = new OAuthTwitter(consumer_key: settings["twitter_auth_consumer_key"], consumer_secret: settings["twitter_auth_consumer_secret"]);

                var auth = Authentications.AuthenticationList.Find(x => x.mode == Authentication.Mode.twitter);

                if (Request.Cookies[auth.cookie_name.ToString()] == null)
                {
                    var cookie = new HttpCookie(auth.cookie_name.ToString(), DateTime.UtcNow.Ticks.ToString());
                    Response.SetCookie(cookie);
                }

                if (oauth_token == null)
                {
                    var link = oauth_twitter.AuthorizationLinkGet();
                    System.Diagnostics.Debug.Assert(link != null);
                    return new RedirectResult(link);
                }

                if (oauth_token != null)
                {
                    var session_id = Request.Cookies[auth.cookie_name.ToString()].Value;
                    oauth_twitter.token = oauth_token;
                    string response = oauth_twitter.oAuthWebRequest(OAuthTwitter.Method.GET, OAuthTwitter.ACCESS_TOKEN, oauth_verifier, String.Empty);
                    if (response.Length > 0)
                    {
                        System.Collections.Specialized.NameValueCollection qs = HttpUtility.ParseQueryString(response);
                        var user_id = qs[auth.trusted_field.ToString()];
                        Authentication.RememberUser(Request.UserHostAddress, Request.UserHostName, session_id, auth.mode.ToString(), auth.trusted_field.ToString(), user_id);
                    }
                }
                return new RedirectResult("/");

            }
            catch ( Exception e )
            {
                GenUtils.PriorityLogMsg("exception", "twitter_auth", e.Message + e.StackTrace);
                var cr = new ContentResult();
                cr.Content = "Sorry, cannot authorize using Twitter now";
                cr.ContentType = "text/plain";
                return cr;
            }
        }