Last active
August 29, 2015 13:59
-
-
Save abjerner/10997293 to your computer and use it in GitHub Desktop.
WebForms example using Skybrud.Social for Twitter OAuth authentication
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using Skybrud.Social.OAuth; | |
using Skybrud.Social.Twitter; | |
using Skybrud.Social.Twitter.OAuth; | |
using Skybrud.Social.Twitter.Objects; | |
namespace Skybrud.Social.Test.Twitter { | |
public partial class OAuth : System.Web.UI.Page { | |
public string Action { | |
get { return Request.QueryString["do"]; } | |
} | |
public string AuthorizationCode { | |
get { return Request.QueryString["code"]; } | |
} | |
protected void Page_Load(object sender, EventArgs e) { | |
// Initialize a new OAuth client with information about your app | |
TwitterOAuthClient oauth = new TwitterOAuthClient { | |
ConsumerKey = "Your Twitter API key", | |
ConsumerSecret = "Your Twitter API secret", | |
Callback = "Your callback URL" | |
}; | |
if (Request.QueryString["do"] == "login") { | |
// Get a request token from the Twitter API | |
OAuthRequestToken token = oauth.GetRequestToken(); | |
// Save the token information to the session so we can grab it later | |
Session[token.Token] = token; | |
// Redirect the user to the authentication page at Twitter.com | |
Response.Redirect(token.AuthorizeUrl); | |
} else if (Request.QueryString["oauth_token"] != null) { | |
// Get OAuth parameters from the query string | |
string oAuthToken = Request.QueryString["oauth_token"]; | |
string oAuthVerifier = Request.QueryString["oauth_verifier"]; | |
// Grab the request token from the session | |
OAuthRequestToken token = Session[oAuthToken] as OAuthRequestToken; | |
if (token == null) { | |
Content.Text = "<p>An error occured. Timeout?</p>"; | |
} else { | |
// Some information for development purposes | |
Content.Text += "<p>Request Token: " + token.Token + "</p>"; | |
Content.Text += "<p>Request Token Secret: " + token.TokenSecret + "</p>"; | |
// Update the OAuth client with information from the request token | |
oauth.Token = token.Token; | |
oauth.TokenSecret = token.TokenSecret; | |
try { | |
// Obtain an access token from the request token and OAuth verifier | |
OAuthAccessToken accessToken = oauth.GetAccessToken(oAuthVerifier); | |
// Update the OAuth client with the access token and access token secret | |
oauth.Token = accessToken.Token; | |
oauth.TokenSecret = accessToken.TokenSecret; | |
// Initialize a new TwitterService instance based on the OAuth client | |
TwitterService service = TwitterService.CreateFromOAuthClient(oauth); | |
// Get information about the authenticated user | |
TwitterUser user = service.Account.VerifyCredentials(); | |
// Some information for development purposes | |
Content.Text += "<b>Hi " + (user.Name ?? user.ScreenName) + "</b> (" + user.Id + ")<br />"; | |
Content.Text += "<p>Access Token: " + accessToken.Token + "</p>"; | |
Content.Text += "<p>Access Token Secret: " + accessToken.TokenSecret + "</p>"; | |
} catch (Exception ex) { | |
Content.Text += "<pre style=\"color: red;\">" + ex.GetType().FullName + ": " + ex.Message + "\r\n\r\n" + ex.StackTrace + "</pre>"; | |
} | |
} | |
} else if (Request.QueryString["denied"] != null) { | |
// Get OAuth parameters from the query string | |
string oAuthToken = Request.QueryString["denied"]; | |
// Remove the request token from the session | |
Session.Remove(oAuthToken); | |
// Write some output for the user | |
Content.Text += "<p>It seems that you cancelled the login!</p>"; | |
Content.Text += "<p><a href=\"OAuth.aspx?do=login\">Try again?</a></p>"; | |
} else { | |
Content.Text += "<p><a href=\"OAuth.aspx?do=login\">Login with Twitter</a></p>"; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment