public void RunScheduler(string NewToken, int CurrentLoggedInUser) { ContextDb _db = new ContextDb(); DatabaseCallsApi _api = new DatabaseCallsApi(); FacebookAPI facebook = new FacebookAPI(NewToken); _api.AddOrUpdateService(CurrentLoggedInUser, "facebook", NewToken); //update user's token var Proposals_lists = _db.FacebookPostSchedule.Where(c => c.UserId == CurrentLoggedInUser && c.ErrorCode != 900).ToList(); var Comments_lists = _db.FacebookCommentSchedule.Where(c => c.UserId == CurrentLoggedInUser && c.ErrorCode != 900).ToList(); if (Proposals_lists.Count > 0) { // foreach (var post in Proposals_lists) { Proposal proposal = _db.Proposal.FirstOrDefault(c => c.Id == post.ProposalID); if (proposal != null) { dynamic status; if (post.ArtistPost) { status = facebook.InsertToArtistFeed(proposal, CurrentLoggedInUser, System.Web.HttpContext.Current.Request.UrlReferrer.ToString()); if (!(status is int)) { proposal.FacebookPostIdArtist = status.id; _db.FacebookPostSchedule.Remove(post); _db.SaveChanges(); } } else { status = facebook.InsertToFeed(proposal, CurrentLoggedInUser, System.Web.HttpContext.Current.Request.UrlReferrer.ToString()); if (!(status is int)) { proposal.FacebookPostId = status.id; _db.FacebookPostSchedule.Remove(post); _db.SaveChanges(); } } //do something } else { _db.FacebookPostSchedule.Remove(post); _db.SaveChanges(); } } // } if (Comments_lists.Count > 0) { foreach (var comment in Comments_lists) { int status = facebook.postCommentToPost(comment.FacebookPostId, comment.Body, comment.UserId); if (status == 0) { _db.FacebookCommentSchedule.Remove(comment); _db.SaveChanges(); } } } }
public ActionResult TwitterCallback(string oauth_token, string oauth_verifier) { if (oauth_token == null) { return RedirectToAction("Index","Home"); } var requestToken = new OAuthRequestToken { Token = oauth_token }; string Token, TokenSecret; Token = ""; TokenSecret = ""; twitter.Authenticate(requestToken,oauth_verifier,ref Token,ref TokenSecret); TwitterUser user = twitter.userInfo(); //get user's info if (OAuthWebSecurity.Login("twitter", user.Id.ToString(), createPersistentCookie: false))//if has account then login { return RedirectToAction("Index","Home"); //go back to the home page } if (User.Identity.IsAuthenticated)//used when adding an external loggin { // If the current user is logged in add the new account DatabaseCallsApi _api = new DatabaseCallsApi(); _api.AddOrUpdateService(WebSecurity.CurrentUserId, "twitter", Token, TokenSecret); //set the service for the user OAuthWebSecurity.CreateOrUpdateAccount("twitter", user.Id.ToString(), WebSecurity.CurrentUserName); return RedirectToAction("Index", "Home"); //go back to the home page } else { // User is new, ask for their desired membership name CheckChanceState(); string loginData = OAuthWebSecurity.SerializeProviderUserId("twitter", user.Id.ToString()); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData("twitter").DisplayName; if (Token != "" && TokenSecret != "") { Session["AccessToken"] = Token; Session["AccessTokenSecret"] = TokenSecret; } return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = user.ScreenName, ExternalLoginData = loginData }); } }
public ActionResult FBAuth(string returnUrl) { var client = new FacebookClient(); var oauthResult = client.ParseOAuthCallbackUrl(Request.Url); // Build the Return URI form the Request Url var redirectUri = new UriBuilder(Request.Url); redirectUri.Path = Url.Action("FbAuth","Account"); dynamic result = client.Get("/oauth/access_token", new //get the facebook token { client_id = Settings.Settings.FacebookAppId, redirect_uri = Settings.Settings.FacebookCallbackURL, client_secret = Settings.Settings.FacebookAppSecret, code = oauthResult.Code, }); if (result == null) { return RedirectToAction("ExternalLoginFailure"); } string accessToken = result.access_token; string token = FacebookAPI.GetLongtermFbToken(accessToken); //get a 2month token FacebookToken = accessToken; Provider = "facebook"; dynamic me = client.Get("/me", //get some basic user info new { fields = "first_name,last_name,email", access_token = accessToken }); if (OAuthWebSecurity.Login("facebook",me.id, createPersistentCookie: false)) { string username = OAuthWebSecurity.GetUserName("facebook", me.id); int userId = WebSecurity.GetUserId(username); FacebookScheduler scheduler = new FacebookScheduler(); //run any undone task scheduler.RunScheduler(token, userId); return RedirectToLocal(returnUrl); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account DatabaseCallsApi _api = new DatabaseCallsApi(); var username = OAuthWebSecurity.GetUserName("facebook", me.id); _api.AddOrUpdateService(WebSecurity.CurrentUserId, "facebook", token); OAuthWebSecurity.CreateOrUpdateAccount("facebook",me.id, WebSecurity.CurrentUserName.ToString()); return RedirectToLocal(returnUrl); } else { // User is new, ask for their desired membership name CheckChanceState(); string loginData = OAuthWebSecurity.SerializeProviderUserId("facebook", me.id); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData("facebook").DisplayName; ViewBag.ReturnUrl = returnUrl; return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = me.email, ExternalLoginData = loginData, Email = me.email }); } }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return RedirectToAction("Manage"); } if (ModelState.IsValid) { // Insert a new user into the database using (UsersContext db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // Check if user already exists if (user == null) { // Insert name into the profile table UserProfile profile = db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); //need to check to see if it is facebook or twitter if (provider == "twitter") { if (Session["AccessToken"] != null && Session["AccessTokenSecret"] != null) //used to distinugish between facebook and twitter regisration { //"9kCMAgidv1NzN8TfMVgZw", "RimlGsenvejdoRlw0NSazYzXJBO6olF2IBMJcw11Uc" //creating new tweetsharp service TwitterService service = new TwitterService(Settings.Settings.TwitterConsumerKey, Settings.Settings.TwitterConsumerSecret, Session["AccessToken"].ToString(), Session["AccessTokenSecret"].ToString()); TwitterUser me = service.VerifyCredentials(); ContextDb _db = new ContextDb(); Models.User temp = new Models.User { UserId = profile.UserId, Email = model.Email, Image = me.ProfileImageUrl, Name =me.Name, RemainingProposals = 1, RemainingVotes = 3 }; temp = _db.User.Add(temp); _db.SaveChanges(); CheckChanceState(temp.UserId); DatabaseCallsApi _api = new DatabaseCallsApi(); _api.AddOrUpdateService(temp.UserId, "twitter", Session["AccessToken"].ToString(), Session["AccessTokenSecret"].ToString()); Session.Remove("AccessToken"); Session.Remove("AccessTokenSecret"); } } else { //setting new facebook service FacebookAPI facebook = new FacebookAPI(FacebookToken); dynamic facebookData = facebook.GetUsersData(); if (facebookData != null) { ContextDb _db = new ContextDb(); Models.User temp = new Models.User { UserId = profile.UserId, Email = facebookData.email.ToString(), Image = facebookData.picture["data"]["url"].ToString(), Name = facebookData.name.ToString(), RemainingProposals = 1, RemainingVotes = 3 }; temp = _db.User.Add(temp); _db.SaveChanges(); CheckChanceState(temp.UserId); DatabaseCallsApi _api = new DatabaseCallsApi(); _api.AddOrUpdateService(temp.UserId, Provider, FacebookToken); } } return RedirectToLocal(returnUrl); } else { ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name."); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return View(model); }
public ActionResult ExternalLoginCallback(string returnUrl) { var url = Url.Action("ExternalLoginCallback"); AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); //facebook 2hrs token FacebookToken = result.ExtraData["accesstoken"]; Provider = result.Provider; if (Provider == "facebook") { string token = FacebookAPI.GetLongtermFbToken(FacebookToken); FacebookToken = token; } if (!result.IsSuccessful) { return RedirectToAction("ExternalLoginFailure"); } if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { string username = OAuthWebSecurity.GetUserName(result.Provider, result.ProviderUserId); int userId = WebSecurity.GetUserId(username); FacebookScheduler scheduler = new FacebookScheduler(); scheduler.RunScheduler(FacebookToken, userId); return RedirectToLocal(returnUrl); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account DatabaseCallsApi _api = new DatabaseCallsApi(); var username = OAuthWebSecurity.GetUserName(result.Provider, result.ProviderUserId); int user_id = WebSecurity.GetUserId(username); _api.AddOrUpdateService(user_id, result.Provider, FacebookToken); OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); return RedirectToLocal(returnUrl); } else { // User is new, ask for their desired membership name string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData }); } }
public void RunScheduler(string NewToken, int CurrentLoggedInUser) { ContextDb _db = new ContextDb(); DatabaseCallsApi _api = new DatabaseCallsApi(); FacebookAPI facebook = new FacebookAPI(NewToken); _api.AddOrUpdateService(CurrentLoggedInUser, "facebook", NewToken); //update user's token var Proposals_lists = _db.FacebookPostSchedule.Where(c => c.UserId == CurrentLoggedInUser && c.ErrorCode != 900).ToList() ; var Comments_lists = _db.FacebookCommentSchedule.Where(c => c.UserId == CurrentLoggedInUser && c.ErrorCode != 900).ToList() ; if (Proposals_lists.Count >0) { // foreach (var post in Proposals_lists) { Proposal proposal = _db.Proposal.FirstOrDefault(c => c.Id == post.ProposalID); if (proposal != null) { dynamic status; if (post.ArtistPost) { status = facebook.InsertToArtistFeed(proposal, CurrentLoggedInUser, System.Web.HttpContext.Current.Request.UrlReferrer.ToString()); if (!(status is int)) { proposal.FacebookPostIdArtist = status.id; _db.FacebookPostSchedule.Remove(post); _db.SaveChanges(); } } else { status = facebook.InsertToFeed(proposal, CurrentLoggedInUser, System.Web.HttpContext.Current.Request.UrlReferrer.ToString()); if (!(status is int)) { proposal.FacebookPostId = status.id; _db.FacebookPostSchedule.Remove(post); _db.SaveChanges(); } } //do something } else { _db.FacebookPostSchedule.Remove(post); _db.SaveChanges(); } } // } if (Comments_lists.Count > 0) { foreach (var comment in Comments_lists) { int status = facebook.postCommentToPost(comment.FacebookPostId, comment.Body, comment.UserId); if (status == 0) { _db.FacebookCommentSchedule.Remove(comment); _db.SaveChanges(); } } } }