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); } }
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); }
/// <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 = "" }); }
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)); }
/// <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("/"); }
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; } }