示例#1
0
        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);
 }
示例#7
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     var client = new TwitterClient(this.consumerKey, this.consumerSecret);
     client.RequestAuthentication(httpContext, this.MultiProtocolIssuer.ReplyUrl);
 }