Beispiel #1
0
        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();
                    }
                }
            }
        }
Beispiel #2
0
        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 });
            }
        }
Beispiel #3
0
        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 });
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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 });
            }
        }
Beispiel #6
0
        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();
                    }

                }
            }
        }