TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Shourya Verdhan
NA
88
56.1k
Add twitter login authentication to website in asp.net
May 28 2014 5:49 AM
Hi,
I just want to
Add twitter login authentication to website in asp.net
in my website.
here is a code which i did for that.
using System;
using System.Collections.Specialized;
using System.Configuration;
using System.IO;
using System.Net;
using System.Web;
namespace oAuthExample
{
public class oAuthTwitter : OAuthBase
{
#region Method enum
public enum Method
{
GET,
POST,
DELETE
} ;
#endregion
public const string REQUEST_TOKEN = "http://api.twitter.com/oauth/request_token";
public const string AUTHORIZE = "https://api.twitter.com/oauth/access_token";
public const string ACCESS_TOKEN = "http://twitter.com/oauth/access_token";
private string _callBackUrl = "oob";
private string _consumerKey = "";
private string _consumerSecret = "";
private string _oauthVerifier = "";
private string _token = "";
private string _tokenSecret = "";
#region Properties
public string ConsumerKey
{
get
{
if (_consumerKey.Length == 0)
{
_consumerKey = ConfigurationManager.AppSettings["consumerKey"];
}
return _consumerKey;
}
set { _consumerKey = value; }
}
public string ConsumerSecret
{
get
{
if (_consumerSecret.Length == 0)
{
_consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];
}
return _consumerSecret;
}
set { _consumerSecret = value; }
}
public string Token
{
get { return _token; }
set { _token = value; }
}
public string TokenSecret
{
get { return _tokenSecret; }
set { _tokenSecret = value; }
}
public string CallBackUrl
{
get { return _callBackUrl; }
set { _callBackUrl = value; }
}
public string OAuthVerifier
{
get { return _oauthVerifier; }
set { _oauthVerifier = value; }
}
#endregion
/// <summary>
/// Get the link to Twitter's authorization page for this application.
/// </summary>
/// <returns>The url with a valid request token, or a null string.</returns>
public string AuthorizationLinkGet()
{
string ret = null;
string response = oAuthWebRequest(Method.GET, REQUEST_TOKEN, String.Empty);
if (response.Length > 0)
{
//response contains token and token secret. We only need the token.
NameValueCollection qs = HttpUtility.ParseQueryString(response);
if (qs["oauth_callback_confirmed"] != null)
{
if (qs["oauth_callback_confirmed"] != "true")
{
throw new Exception("OAuth callback not confirmed.");
}
}
if (qs["oauth_token"] != null)
{
ret = AUTHORIZE + "?oauth_token=" + qs["oauth_token"];
}
}
return ret;
}
/// <summary>
/// Exchange the request token for an access token.
/// </summary>
/// <param name="authToken">The oauth_token is supplied by Twitter's authorization page following the callback.</param>
/// <param name="oauthVerifier">An oauth_verifier parameter is provided to the client either in the pre-configured callback URL</param>
public void AccessTokenGet(string authToken, string oauthVerifier)
{
Token = authToken;
OAuthVerifier = oauthVerifier;
string response = oAuthWebRequest(Method.GET, ACCESS_TOKEN, String.Empty);
if (response.Length > 0)
{
//Store the Token and Token Secret
NameValueCollection qs = HttpUtility.ParseQueryString(response);
if (qs["oauth_token"] != null)
{
Token = qs["oauth_token"];
}
if (qs["oauth_token_secret"] != null)
{
TokenSecret = qs["oauth_token_secret"];
}
}
}
/// <summary>
/// Submit a web request using oAuth.
/// </summary>
/// <param name="method">GET or POST</param>
/// <param name="url">The full url, including the querystring.</param>
/// <param name="postData">Data to post (querystring format)</param>
/// <returns>The web server response.</returns>
public string oAuthWebRequest(Method method, string url, string postData)
{
string outUrl = "";
string querystring = "";
string ret = "";
//Setup postData for signing.
//Add the postData to the querystring.
if (method == Method.POST || method == Method.DELETE)
{
if (postData.Length > 0)
{
//Decode the parameters and re-encode using the oAuth UrlEncode method.
NameValueCollection qs = HttpUtility.ParseQueryString(postData);
postData = "";
foreach (string key in qs.AllKeys)
{
if (postData.Length > 0)
{
postData += "&";
}
qs[key] = HttpUtility.UrlDecode(qs[key]);
qs[key] = UrlEncode(qs[key]);
postData += key + "=" + qs[key];
}
if (url.IndexOf("?") > 0)
{
url += "&";
}
else
{
url += "?";
}
url += postData;
}
}
var uri = new Uri(url);
string nonce = GenerateNonce();
string timeStamp = GenerateTimeStamp();
//Generate Signature
string sig = GenerateSignature(uri,
ConsumerKey,
ConsumerSecret,
Token,
TokenSecret,
CallBackUrl,
OAuthVerifier,
method.ToString(),
timeStamp,
nonce,
out outUrl,
out querystring);
querystring += "&oauth_signature=" + UrlEncode(sig);
//Convert the querystring to postData
if (method == Method.POST || method == Method.DELETE)
{
postData = querystring;
querystring = "";
}
if (querystring.Length > 0)
{
outUrl += "?";
}
ret = WebRequest(method, outUrl + querystring, postData);
return ret;
}
/// <summary>
/// Web Request Wrapper
/// </summary>
/// <param name="method">Http Method</param>
/// <param name="url">Full url to the web resource</param>
/// <param name="postData">Data to post in querystring format</param>
/// <returns>The web server response.</returns>
public string WebRequest(Method method, string url, string postData)
{
HttpWebRequest webRequest = null;
StreamWriter requestWriter = null;
string responseData = "";
webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
webRequest.Method = method.ToString();
webRequest.ServicePoint.Expect100Continue = false;
//webRequest.UserAgent = "Identify your application please.";
//webRequest.Timeout = 20000;
if (method == Method.POST || method == Method.DELETE)
{
webRequest.ContentType = "application/x-www-form-urlencoded";
//POST the data.
requestWriter = new StreamWriter(webRequest.GetRequestStream());
try
{
requestWriter.Write(postData);
}
catch
{
throw;
}
finally
{
requestWriter.Close();
requestWriter = null;
}
}
responseData = WebResponseGet(webRequest);
webRequest = null;
return responseData;
}
/// <summary>
/// Process the web response.
/// </summary>
/// <param name="webRequest">The request object.</param>
/// <returns>The response data.</returns>
public string WebResponseGet(HttpWebRequest webRequest)
{
StreamReader responseReader = null;
string responseData = "";
try
{
responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
responseData = responseReader.ReadToEnd();
}
catch
{
throw;
}
finally
{
webRequest.GetResponse().GetResponseStream().Close();
responseReader.Close();
responseReader = null;
}
return responseData;
}
}
}
its giving me The remote server returned an error: (403) Forbidden.
Reply
Answers (
1
)
Export to excel Gridview or Repeater having 100000 records
move to the next rows in datagrid view...