public override IClaimsIdentity ProcessSignInResponse(string realm, string originalUrl, HttpContextBase httpContext) { var client = new TwitterClient(this.consumerKey, this.consumerSecret); AuthenticationResult result; try { result = client.VerifyAuthentication(httpContext); } catch (WebException wex) { throw new InvalidOperationException(new StreamReader(wex.Response.GetResponseStream()).ReadToEnd(), wex); } var claims = new List<Claim> { new Claim(System.IdentityModel.Claims.ClaimTypes.NameIdentifier, result.ExtraData["name"]) }; foreach (var claim in result.ExtraData) { claims.Add(new Claim("http://schemas.twitter.com/" + claim.Key, claim.Value)); } return new ClaimsIdentity(claims, "Twitter"); }
/// <summary> /// Registers a supported OAuth client with the specified consumer key and consumer secret. /// </summary> /// <param name="client">One of the supported OAuth clients.</param> /// <param name="consumerKey">The consumer key.</param> /// <param name="consumerSecret">The consumer secret.</param> public static void RegisterOAuthClient(BuiltInOAuthClient client, string consumerKey, string consumerSecret) { IAuthenticationClient authenticationClient; switch (client) { case BuiltInOAuthClient.LinkedIn: authenticationClient = new LinkedInClient(consumerKey, consumerSecret); break; case BuiltInOAuthClient.Twitter: authenticationClient = new TwitterClient(consumerKey, consumerSecret); break; case BuiltInOAuthClient.Facebook: authenticationClient = new FacebookClient(consumerKey, consumerSecret); break; case BuiltInOAuthClient.WindowsLive: authenticationClient = new WindowsLiveClient(consumerKey, consumerSecret); break; default: throw new ArgumentOutOfRangeException("client"); } RegisterClient(authenticationClient); }
// Callback after Twitter Login public ActionResult Callback() { DotNetOpenAuth.AspNet.Clients.TwitterClient client = new TwitterClient(ConfigurationManager.AppSettings["twitterConsumerKey"], ConfigurationManager.AppSettings["twitterConsumerSecret"]); var result = client.VerifyAuthentication(this.HttpContext); return RedirectToAction("Index", "Home"); }
public ActionResult Login(string returnUrl) { DotNetOpenAuth.AspNet.Clients.TwitterClient client = new TwitterClient(ConfigurationManager.AppSettings["twitterConsumerKey"], ConfigurationManager.AppSettings["twitterConsumerSecret"]); UrlHelper helper = new UrlHelper(this.ControllerContext.RequestContext); var result = helper.Action("Index","Auth", null, "http"); client.RequestAuthentication(this.HttpContext, new Uri(result)); return new EmptyResult(); }
public ActionResult Index() { DotNetOpenAuth.AspNet.Clients.TwitterClient client = new TwitterClient(ConfigurationManager.AppSettings["twitterConsumerKey"], ConfigurationManager.AppSettings["twitterConsumerSecret"]); var result = client.VerifyAuthentication(this.HttpContext); if(result.IsSuccessful) { var user = RavenSession.Query<User>().Search(x => x.ProviderUserId, result.ProviderUserId).SingleOrDefault(); if (user == null) { user = new User(); user.Id = Guid.NewGuid(); user.ProviderUserId = result.ProviderUserId; user.RegisteredOn = DateTime.UtcNow; } // sync with twitter user meta data user.Login = result.UserName; if (result.ExtraData.ContainsKey("location")) user.Location = result.ExtraData["location"]; if (result.ExtraData.ContainsKey("name")) user.Name = result.ExtraData["name"]; if (result.ExtraData.ContainsKey("description")) user.Description = result.ExtraData["description"]; if (result.ExtraData.ContainsKey("ur")) user.Url = result.ExtraData["url"]; if (result.ExtraData.ContainsKey("accesstoken")) user.AccessToken = result.ExtraData["accesstoken"]; user.LastSignIn = DateTime.UtcNow; RavenSession.Store(user); RavenSession.SaveChanges(); FormsAuthentication.SetAuthCookie(user.Login, false); if (HttpContext.Request.UrlReferrer != null && string.IsNullOrWhiteSpace(HttpContext.Request.UrlReferrer.AbsoluteUri) == false) return Redirect(HttpContext.Request.UrlReferrer.AbsoluteUri); return RedirectToAction("Index", "Home"); } return RedirectToAction("Index", "Home"); }
/// <summary> /// Registers the Twitter client. /// </summary> /// <param name="consumerKey">The consumer key.</param> /// <param name="consumerSecret">The consumer secret.</param> /// <param name="displayName">The display name.</param> /// <param name="extraData">The data bag used to store extra data about this client</param> public static void RegisterTwitterClient(string consumerKey, string consumerSecret, string displayName, IDictionary<string, object> extraData) { var twitterClient = new TwitterClient(consumerKey, consumerSecret); RegisterClient(twitterClient, displayName, extraData); }
public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext) { var client = new TwitterClient(this.consumerKey, this.consumerSecret); client.RequestAuthentication(httpContext, this.MultiProtocolIssuer.ReplyUrl); }