// GET: Facebook
        public ActionResult ListMyPhotos()
        {
            Models.UserPhotos       objUserPhotos = new Models.UserPhotos();
            Facebook.FacebookClient objFBClient   =
                new Facebook.FacebookClient(GlobalSettings.Facebook_AccessToken);
            dynamic myPhotos = objFBClient.Get("/me/photos");

            if (myPhotos.data.Count > 0)
            {
                for (int iPos = 0; iPos < myPhotos.data.Count; iPos++)
                {
                    var currentRow = myPhotos.data[iPos];
                    Models.UserPhotoInfo objUserPhotoInfo = new Models.UserPhotoInfo();
                    objUserPhotoInfo.CreatedTime = DateTime.Parse(currentRow.created_time);
                    objUserPhotoInfo.Name        = currentRow.name;
                    objUserPhotoInfo.Id          = currentRow.id;
                    dynamic currentPhotoInfo = objFBClient.Get(string.Format("{0}?fields=link,images", objUserPhotoInfo.Id));
                    var     linkToFirstImage = currentPhotoInfo.images[0].source;

                    //objUserPhotoInfo.PhotoLink = currentPhotoInfo.link;
                    objUserPhotoInfo.PhotoLink = linkToFirstImage;
                    objUserPhotos.PhotosInfo.Add(objUserPhotoInfo);
                }
            }
            return(View(objUserPhotos));
        }
示例#2
0
        public JsonResult GetComment(string id)
        {
            UserLoginInfo user = (UserLoginInfo)Session[CommonConstants.USER_LOGIN];
            var           fb   = new Facebook.FacebookClient();

            fb.AccessToken = user.access_token;
            dynamic data = fb.Get(id + "/comments");

            List <Comment> comments = new List <Comment>();

            foreach (var com in data.data)
            {
                Comment    comment = new Comment();
                Facebooker fa      = new Facebooker();
                comment.id           = com.id;
                comment.message      = com.message;
                comment.created_time = com.created_time;
                fa.id   = com.from.id;
                fa.name = com.from.name;

                dynamic dataImg = fb.Get(fa.id + "?fields=picture");
                fa.linkImg = dataImg.picture.data.url;


                comment.fbker = fa;

                comments.Add(comment);
            }

            return(Json(new { data = comments }, JsonRequestBehavior.AllowGet));
        }
示例#3
0
        public ActionResult FacebookCallBack(string code)
        {
            var     fb     = new Facebook.FacebookClient();
            dynamic result = fb.Post("oauth/access_token", new {
                client_id     = ConfigurationManager.AppSettings["FBAppId"],
                client_secret = ConfigurationManager.AppSettings["FBSecret"],
                redirect_uri  = RedirectUri.AbsoluteUri,
                code          = code,
            });

            var accessToken = result.access_token;

            if (!string.IsNullOrEmpty(accessToken))
            {
                fb.AccessToken = accessToken;
                dynamic      me    = fb.Get("me?fields=id,first_name,last_name,email");
                UserFacebook users = new UserFacebook();
                users.user_id      = me.id;
                users.access_token = accessToken;
                users.email        = me.email;
                users.first_name   = me.first_name;
                users.last_name    = me.last_name;

                Session.Add("infoUser", users);
            }
            else
            {
            }

            return(Redirect("/Login/Page"));
        }
示例#4
0
        public ActionResult FacebookCallback(string code)
        {
            var     fb     = new FacebookClient();
            dynamic result = fb.Post("oauth/access_token", new
            {
                client_id     = "520025764710565",
                client_secret = "0d7ea70fb467f9f5a5c9444b63f2f8a6",
                redirect_uri  = RedirectUri.AbsoluteUri,
                code          = code
            });
            var accessToken = result.access_token;

            // Store the access token in the session
            Session["AccessToken"] = accessToken;

            // update the facebook client with the access token so
            // we can make requests on behalf of the user
            fb.AccessToken = accessToken;

            // Get the user's information
            dynamic me    = fb.Get("me/home?type=newsfeed");
            string  email = me.email;

            // Set the auth cookie
            FormsAuthentication.SetAuthCookie(email, false);

            return(RedirectToAction("Index", "Home"));
        }
        public ActionResult FacebookLoginResult()
        {
            string code = Request["code"];

            Facebook.FacebookClient fb = new Facebook.FacebookClient();
            fb.AppId     = "958753294515704";
            fb.AppSecret = "a77614a903afbf8f773c0f06295f08c8";

            fb.AccessToken = code;

            dynamic result = fb.Post("/oauth/access_token", new
            {
                client_id     = "958753294515704",
                client_secret = "a77614a903afbf8f773c0f06295f08c8",
                code          = code,
                redirect_uri  = "http://localhost:50903/Account/FacebookLoginResult"
            });

            fb.AccessToken = result.access_token;
            dynamic userdata = fb.Get("me");

            string name = userdata.name;

            string[] fullname = name.Split(' ');
            userdata.firstname = fullname[0];
            userdata.lastname  = fullname[1];
            bool serviceresult = _socialUserService.SocialUserOperation((int)Common.SystemConstants.SystemConstannts.SOCIAL_TYPE.FACEBOOK, userdata.id, userdata.email, userdata.name, userdata.firstname, userdata.lastname, null);

            if (serviceresult)
            {
                return(RedirectToAction("Index", "Home", new { }));
            }

            return(null);
        }
示例#6
0
        public Authentication Login(LoginCredentials credentials)
        {
            var result = new Authentication();

            var facebookCredentials = credentials as FacebookLoginCredentials;
            if (facebookCredentials != null)
            {
                var facebookSession = new Facebook.FacebookClient(facebookCredentials.AccessToken);

                dynamic me = facebookSession.Get("me");
                var facebookUser = new FacebookUser
                {
                    FacebookUserId = long.Parse(me["id"]),
                    UserName = me["username"]
                };

                result.UserId = _data.CheckOrInsertFacebookUser(facebookUser);
                var session = StartSession(result.UserId);
                result.Ticket = session.Key;
                result.ValidTill = session.Value;

                return result;
            }

            throw new NotImplementedException("Only facebook users are supported now");
        }
        public static ResponseData DeleteArticle(string originalUrl)
        {
            ResponseData responseData = new ResponseData();

            try
            {
                var fbClient = new Facebook.FacebookClient(FbToken)
                {
                    AppId     = FbAppId,
                    AppSecret = FbAppSecret
                };
                //var fbParams = new Dictionary<string, object>{ ["fields"] = "instant_article" };

                Dictionary <string, object> fbParams = new Dictionary <string, object>();
                fbParams["fields"] = "instant_article";

                //get
                dynamic articleInfo = fbClient.Get("/" + FbAPIVersion + "/?id=" + originalUrl + "&fields=instant_article", fbParams);
                if (articleInfo != null && !string.IsNullOrEmpty(articleInfo.instant_article.id))
                {
                    //delete
                    var c = fbClient.Delete(string.Format("/{0}/{1}", FbAPIVersion, articleInfo.instant_article.id));
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLog(Logger.LogType.Error, ex.ToString());
            }

            return(responseData);
        }
示例#8
0
        // GET: LoginPage/LoginPages
        public ActionResult Page()
        {
            UserFacebook user = (UserFacebook)Session["infoUser"];
            var          fb   = new Facebook.FacebookClient();

            fb.AccessToken = user.access_token;
            dynamic avatar = fb.Get("me/accounts?type=page");

            dynamic data = avatar.data;

            lstPage = new List <Models.Pagefb>();

            foreach (dynamic info in data)
            {
                Pagefb page = new Pagefb();
                page.pageId      = info.id;
                page.accessToken = info.access_token;
                page.category    = info.category;
                page.pageName    = info.name;
                page.perms       = info.perms;
                lstPage.Add(page);
            }
            ViewData.Add("pages", lstPage);
            return(View());
        }
示例#9
0
        public ActionResult FacebookCallBack(string code)
        {
            var     fb     = new Facebook.FacebookClient();
            dynamic result = fb.Post("oauth/access_token", new {
                client_id     = ConfigurationManager.AppSettings["FBAppId"],
                client_secret = ConfigurationManager.AppSettings["FBSecret"],
                redirect_uri  = RedirectUri.AbsoluteUri,
                code          = code,
            });

            var accessToken = result.access_token;

            if (!string.IsNullOrEmpty(accessToken))
            {
                fb.AccessToken = accessToken;
                dynamic       me      = fb.Get("me?fields=id,first_name,last_name,email,picture");
                dynamic       dataPic = me.picture;
                dynamic       datasss = dataPic.data;
                UserLoginInfo users   = new UserLoginInfo();
                users.user_id      = me.id;
                users.access_token = accessToken;
                users.email        = me.email;
                users.first_name   = me.first_name;
                users.last_name    = me.last_name;
                users.url_image    = datasss.url;
                Session[CommonConstants.USER_LOGIN] = users;
            }
            else
            {
            }

            return(Redirect("/Login/Page"));
        }
示例#10
0
        public Authentication Login(LoginCredentials credentials)
        {
            var result = new Authentication();

            var facebookCredentials = credentials as FacebookLoginCredentials;

            if (facebookCredentials != null)
            {
                var facebookSession = new Facebook.FacebookClient(facebookCredentials.AccessToken);

                dynamic me           = facebookSession.Get("me");
                var     facebookUser = new FacebookUser
                {
                    FacebookUserId = long.Parse(me["id"]),
                    UserName       = me["username"]
                };

                result.UserId = _data.CheckOrInsertFacebookUser(facebookUser);
                var session = StartSession(result.UserId);
                result.Ticket    = session.Key;
                result.ValidTill = session.Value;

                return(result);
            }

            throw new NotImplementedException("Only facebook users are supported now");
        }
示例#11
0
        public ActionResult FacebookCallback(string code)
        {
            var fb = new FacebookClient();
            dynamic result = fb.Post("oauth/access_token", new
            {
                client_id = "520025764710565",
                client_secret = "0d7ea70fb467f9f5a5c9444b63f2f8a6",
                redirect_uri = RedirectUri.AbsoluteUri,
                code = code
            });
            var accessToken = result.access_token;

            // Store the access token in the session
            Session["AccessToken"] = accessToken;

            // update the facebook client with the access token so
            // we can make requests on behalf of the user
            fb.AccessToken = accessToken;

            // Get the user's information
            dynamic me = fb.Get("me/home?type=newsfeed");
            string email = me.email;

            // Set the auth cookie
            FormsAuthentication.SetAuthCookie(email, false);

            return RedirectToAction("Index", "Home");
        }
示例#12
0
        private void fbLogin(HttpContext context)
        {
            string token = context.Request.Params["token"];

            Facebook.FacebookClient client = new Facebook.FacebookClient(token);
            client.IsSecureConnection = true;
            Facebook.JsonObject o = (Facebook.JsonObject)client.Get("/me");
            var db = GetDataContext1;

            using (var scope = db.GetTransaction())
            {
                try
                {
                    string              first_name = (string)o["first_name"];
                    string              name       = (string)o["name"];
                    decimal             id         = Convert.ToDecimal(o["id"]);
                    Data.POCOS.Facebook fb         = new Data.POCOS.Facebook();
                    fb.name       = name;
                    fb.first_name = first_name;
                    fb.gender     = (string)o["gender"];
                    fb.id         = id;
                    fb.last_name  = (string)o["last_name"];
                    fb.link       = (string)o["link"];
                    fb.locale     = (string)o["locale"];
                    fb.timezone   = Convert.ToDouble(o["timezone"]);
                    string   updatedtime = (string)o["updated_time"];
                    DateTime dt;
                    if (DateTime.TryParse(updatedtime, out dt))
                    {
                        fb.updated_time = dt;
                    }
                    if (db.Exists <Data.POCOS.Facebook>(id))
                    {
                        db.Update(fb);
                    }
                    else
                    {
                        db.Insert(fb);
                    }
                    Data.POCOS.AppUser au = Data.POCOS.AppUser.FirstOrDefault("Select top 1 * from AppUsers where facebookid=@0", id);
                    if (au == null)
                    {
                        au            = new Data.POCOS.AppUser();
                        au.FirstName  = first_name;
                        au.facebookid = id;
                        db.Insert(au);
                    }

                    scope.Complete();
                    Common.WriteValue(Common.AuthCookie, au.ID.ToString());
                    Common.WriteValue(Common.InfoCookie, JObject.FromObject(new { email = au.Email, name = string.IsNullOrEmpty(au.FirstName) ? au.Name : au.FirstName, avatar = string.IsNullOrWhiteSpace(au.Avatar) ? null : Common.UploadedImageRelPath + au.Avatar, points = au.Points }));
                }
                finally
                {
                    scope.Dispose();
                }
            }
        }
示例#13
0
文件: POST.ashx.cs 项目: ekah/pinsite
        private void fbLogin(HttpContext context)
        {
            string token = context.Request.Params["token"];

            Facebook.FacebookClient client = new Facebook.FacebookClient(token);
            //client.Post()
            client.UseFacebookBeta = client.IsSecureConnection = true;
            Facebook.JsonObject o = (Facebook.JsonObject)client.Get("/me");
            var db = new PetaPoco.Database(Common.HairStyleConnectionString, "System.Data.SqlClient");

            using (var scope = db.GetTransaction())
            {
                try
                {
                    string         first_name = (string)o["first_name"];
                    string         name       = (string)o["name"];
                    decimal        id         = Convert.ToDecimal(o["id"]);
                    POCOS.Facebook fb         = new POCOS.Facebook();
                    fb.name       = name;
                    fb.first_name = first_name;
                    fb.gender     = (string)o["gender"];
                    fb.id         = id;
                    fb.last_name  = (string)o["last_name"];
                    fb.link       = (string)o["link"];
                    fb.locale     = (string)o["locale"];
                    fb.timezone   = Convert.ToDouble(o["timezone"]);
                    string   updatedtime = (string)o["updated_time"];
                    DateTime dt;
                    if (DateTime.TryParse(updatedtime, out dt))
                    {
                        fb.updated_time = dt;
                    }
                    if (db.Exists <POCOS.Facebook>(id))
                    {
                        db.Update(fb);
                    }
                    else
                    {
                        db.Insert(fb);
                    }
                    POCOS.AppUser au = POCOS.AppUser.FirstOrDefault("Select top 1 * from AppUsers where facebookid=@0", id);
                    if (au == null)
                    {
                        au            = new POCOS.AppUser();
                        au.FirstName  = first_name;
                        au.facebookid = id;
                        db.Insert(au);
                    }
                    scope.Complete();
                    CookieUtil.WriteCookie(Common.AuthCookie, EncDec.Encrypt(JsonConvert.SerializeObject(new { ID = au.ID }), Common.DefaultPassword), false);
                    CookieUtil.WriteCookie(Common.InfoCookie, JsonConvert.SerializeObject(new { email = au.Email, name = au.Name, avatar = string.IsNullOrWhiteSpace(au.Avatar) ? null : Common.UploadedImageRelPath + au.Avatar }), false);
                }
                finally
                {
                    scope.Dispose();
                }
            }
        }
 public void FacebookUserHomeAPI(string UserId, string FacebookId)
 {
     try
     {
         Guid                      userid    = Guid.Parse(UserId);
         FacebookHelper            fbhelper  = new FacebookHelper();
         FacebookAccountRepository fbAccRepo = new FacebookAccountRepository();
         FacebookAccount           fbAccount = fbAccRepo.getFacebookAccountDetailsById(FacebookId, userid);
         Facebook.FacebookClient   fb        = new Facebook.FacebookClient(fbAccount.AccessToken);
         var     home    = fb.Get("/me/home");
         dynamic profile = fb.Get("me");
         fbhelper.getFacebookUserHome(home, profile);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.StackTrace);
     }
 }
示例#15
0
        public void FacebookUserFeedAPI(string UserId, string FacebookId)
        {
            try
            {
                Guid userid = Guid.Parse(UserId);
                FacebookHelper fbhelper = new FacebookHelper();
                FacebookAccountRepository fbAccRepo = new FacebookAccountRepository();
                FacebookAccount fbAccount = fbAccRepo.getFacebookAccountDetailsById(FacebookId, userid);
                Facebook.FacebookClient fb = new Facebook.FacebookClient(fbAccount.AccessToken);
                var feeds = fb.Get("/me/feed");
                dynamic profile = fb.Get("me");
                fbhelper.getFacebookUserFeeds(feeds, profile);

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }
 private UserProfile GetFromFacebook(ClaimsIdentity identity)
 {
     string accessToken = identity.FindFirstValue("FacebookAccessToken");
     var fbClient = new Facebook.FacebookClient(accessToken);
     dynamic fbInfo = fbClient.Get("/me?fields=id,name,email,first_name,last_name");
     return new UserProfile
     {
         Email = fbInfo.email,
         Name = fbInfo.name
     };
 }
示例#17
0
        public ActionResult Index()
        {
            if (Session[CommonConstants.USER_LOGIN] == null)
            {
                return(Redirect("/LoginPage/Index"));
            }
            else
            {
                var user = (UserLoginInfo)Session[CommonConstants.USER_LOGIN];
                Console.WriteLine(user.url_image);
            }

            ViewBag.Title = "Home Page";

            List <Pagefb> lstpage = (List <Pagefb>)Session[CommonConstants.PAGE_LOGIN];
            Pagefb        page    = lstpage[0];
            var           fb      = new Facebook.FacebookClient();

            fb.AccessToken = page.accessToken;
            dynamic piture = fb.Get("me?fields=picture");
            dynamic feed   = fb.Get("me/feed");

            page.image = piture.picture.data.url;

            List <Feeds> feeds = new List <Feeds>();

            foreach (var data in feed.data)
            {
                Feeds fe = new Feeds();
                fe.id          = data.id;
                fe.message     = data.message;
                fe.create_time = data.created_time;

                feeds.Add(fe);
            }

            ViewData.Add("feeds", feeds);
            ViewData.Add("page", page);

            return(View());
        }
        private void FetchDP(string access_token)
        {
            Facebook.FacebookClient client = new Facebook.FacebookClient();
            client.AccessToken = access_token;
            dynamic me = client.Get("me?fields=picture,email,name,gender");

            pictureBox1.Load(me.picture.data.url);
            label1.Visible = true;
            string lable = "Hello " + me[2] + " !! Your email id is " + me[1];

            label1.Text = lable;
        }
示例#19
0
        private static string GetFacebookToken()
        {
            var     fb    = new Facebook.FacebookClient();
            dynamic token = fb.Get("/" + FbAPIVersion + "/oauth/access_token", new
            {
                client_id     = FbAppId,
                client_secret = FbAppSecret,
                grant_type    = "client_credentials"
            });

            return(token != null ? token.access_token : string.Empty);
        }
 public override ExternalAuthenticationInfo GetAuthenticationInfo(string accessToken)
 {
     var graph = new Facebook.FacebookClient(accessToken);
     var me = graph.Get<dynamic>("me");
     return new ExternalAuthenticationInfo {
         AccessToken = accessToken,
         Id = me.id,
         Username = me.username,
         Name = me.name,
         Email = me.email
     };
 }
        private UserProfile GetFromFacebook(ClaimsIdentity identity)
        {
            string  accessToken = identity.FindFirstValue("FacebookAccessToken");
            var     fbClient    = new Facebook.FacebookClient(accessToken);
            dynamic fbInfo      = fbClient.Get("/me?fields=id,name,email,first_name,last_name");

            return(new UserProfile
            {
                Email = fbInfo.email,
                Name = fbInfo.name
            });
        }
        public JsonNetResult Login(FormCollection form)
        {
            var accessToken = form["accessToken"];

            var fb = new Facebook.FacebookClient(accessToken);
            dynamic user = fb.Get("me");

            this.ActivateUser(user.id);
            this.CreateAuthenticationCookie(accessToken, user);

            return new LoginResult(user.id);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.CurrentMember != null && this.CurrentUser != null)
            {
                Response.Redirect(MyAccountItem.GetMyAccountPage().GetUrl());
            }

            //assign placeholders
            uxEmailAddress.Attributes["placeholder"]    = DictionaryConstants.EnterEmailAddressWatermark;
            uxFirstName.Attributes["placeholder"]       = DictionaryConstants.FirstNameWatermark;
            uxPassword.Attributes["placeholder"]        = DictionaryConstants.EnterPasswordWatermark;
            uxPasswordConfirm.Attributes["placeholder"] = DictionaryConstants.ReEnterNewPasswordWatermark;
            uxZipCode.Attributes["placeholder"]         = DictionaryConstants.ZipCodeWatermark;

            //assign button text and mark as default button for form
            uxSubmit.Text = DictionaryConstants.SubmitButtonText;
            this.Page.Form.DefaultButton = this.uxSubmit.UniqueID;

            //setup signup text and navigation
            uxSignIn.Text        = DictionaryConstants.SignInButtonText;
            uxSignIn.NavigateUrl = SignInPageItem.GetSignInPage().GetUrl();

            //set validation
            valFirstName.ErrorMessage           = DictionaryConstants.FirstNameErrorMessage;
            valEmail.ErrorMessage               = valRegEmail.ErrorMessage = DictionaryConstants.EmailAddressErrorMessage;
            valRegEmail.ValidationExpression    = Constants.Validators.Email;
            valPassword.ErrorMessage            = valPasswordConfirm.ErrorMessage = DictionaryConstants.PasswordErrorMessage;
            valRegPassword.ValidationExpression = valRegPasswordConfirm.ValidationExpression = Constants.Validators.Password;
            //TODO: move to dictionary
            valRegPassword.ErrorMessage = valRegPasswordConfirm.ErrorMessage = DictionaryConstants.PasswordErrorMessage;
            //TODO: move to dictionary
            valCompPassword.ErrorMessage    = valCompPasswordConfirm.ErrorMessage = DictionaryConstants.PasswordMatchError;
            valZipCode.ErrorMessage         = DictionaryConstants.ZipCodeErrorMessage;
            valZipCode.ValidationExpression = Constants.Validators.ZipCode;

            if (!string.IsNullOrEmpty(AccessToken))
            {
                var     client = new Facebook.FacebookClient(AccessToken);
                dynamic me     = client.Get("me", new { fields = "name,email" });

                uxEmailAddress.Text = me.email;
                uxFirstName.Text    = me.name;

                var pass = Guid.NewGuid().ToString().Substring(0, 12);

                uxPassword.Attributes["value"]        = pass;
                uxPasswordConfirm.Attributes["value"] = pass;

                uxPassword.Enabled        = false;
                uxPasswordConfirm.Enabled = false;
            }
        }
示例#24
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.CurrentMember != null && this.CurrentUser != null)
            {
                Response.Redirect(MyAccountItem.GetMyAccountPage().GetUrl());
            }

            //assign placeholders
            uxEmailAddress.Attributes["placeholder"] = DictionaryConstants.EnterEmailAddressWatermark;
            uxFirstName.Attributes["placeholder"] = DictionaryConstants.FirstNameWatermark;
            uxPassword.Attributes["placeholder"] = DictionaryConstants.EnterPasswordWatermark;
            uxPasswordConfirm.Attributes["placeholder"] = DictionaryConstants.ReEnterNewPasswordWatermark;
            uxZipCode.Attributes["placeholder"] = DictionaryConstants.ZipCodeWatermark;

            //assign button text and mark as default button for form
            uxSubmit.Text = DictionaryConstants.SubmitButtonText;
            this.Page.Form.DefaultButton = this.uxSubmit.UniqueID;

            //setup signup text and navigation
            uxSignIn.Text = DictionaryConstants.SignInButtonText;
            uxSignIn.NavigateUrl = SignInPageItem.GetSignInPage().GetUrl();

            //set validation
            valFirstName.ErrorMessage = DictionaryConstants.FirstNameErrorMessage;
            valEmail.ErrorMessage = valRegEmail.ErrorMessage = DictionaryConstants.EmailAddressErrorMessage;
            valRegEmail.ValidationExpression = Constants.Validators.Email;
            valPassword.ErrorMessage = valPasswordConfirm.ErrorMessage = DictionaryConstants.PasswordErrorMessage;
            valRegPassword.ValidationExpression = valRegPasswordConfirm.ValidationExpression = Constants.Validators.Password;
            //TODO: move to dictionary
            valRegPassword.ErrorMessage = valRegPasswordConfirm.ErrorMessage = DictionaryConstants.PasswordErrorMessage;
            //TODO: move to dictionary
            valCompPassword.ErrorMessage = valCompPasswordConfirm.ErrorMessage = DictionaryConstants.PasswordMatchError;
            valZipCode.ErrorMessage = DictionaryConstants.ZipCodeErrorMessage;
            valZipCode.ValidationExpression = Constants.Validators.ZipCode;            

            if (!string.IsNullOrEmpty(AccessToken))
            {
                var client = new Facebook.FacebookClient(AccessToken);
                dynamic me = client.Get("me", new { fields = "name,email" });

                uxEmailAddress.Text = me.email;
                uxFirstName.Text = me.name;

                var pass = Guid.NewGuid().ToString().Substring(0, 12);

                uxPassword.Attributes["value"] = pass;
                uxPasswordConfirm.Attributes["value"] = pass;

                uxPassword.Enabled = false;
                uxPasswordConfirm.Enabled = false;
            }
        }
示例#25
0
        public Authorization AuthorizeCustomer(Login l)
        {
            ICustomerRepository repo = Models.RepoFactory.GetCustomerRepo();

            Customer c=null;

            if (!l.EmailAddress.Equals(""))
            {
                c = repo.GetWithEmailAddress(l.EmailAddress);
                if (c == null)
                    return null;

                if (!l.Password.ToUpper().Equals(c.Password.ToUpper()))
                    return null;
            }
            else
            {
                Facebook.FacebookClient fb = new Facebook.FacebookClient();

                c = repo.GetWithFacebookID(l.FacebookID);
                if (c == null)
                    return null;

                fb.AccessToken = l.FacebookToken;

                try
                {
                    dynamic me = fb.Get("me");

                    if (me == null || me.first_name.Equals(""))
                        return null;
                }
                catch (Exception e)
                {
                    return null;
                }

                c.FacebookAccessToken = l.FacebookToken;
                repo.Update(c); // store the newest Facebook access token since it may have changed
            }

            Authorization a = new Authorization("test" + System.DateTime.Now.Ticks.ToString());
            a.CustomerID = c.ID;
            a.EmailAddress = c.EmailAddress;
            a.Type = c.Type;

            IAuthorizationRepository authRepo = new AuthorizationRepository();
            authRepo.Add(a); // store the auth token in the repo

            return a;
        }
示例#26
0
        private void doLogin()
        {

            //blow out any existing member when someone tries to sign in
            try
            {
                //Reset session backed my groups from Whats Happening Now
                Session["_selectedGroups"] = null;
               
                //lets make sure to reset all user&member info before we start inflating it
                this.FlushCurrentMemberUser();

                var membershipManager = new MembershipManager();

                var currentMember = new Member();

                if (!string.IsNullOrEmpty(AccessToken))
                {
                    var client = new Facebook.FacebookClient(AccessToken);
                    dynamic me = client.Get("me", new { fields = "email" });

                    currentMember = membershipManager.GetMember(me.email);
                }
                else
                {
                    currentMember = membershipManager.AuthenticateUser(uxEmailAddress.Text, uxPassword.Text);
                }

                if (currentMember != null)
                {
                    this.CurrentMember = currentMember;
                    this.CurrentUser = membershipManager.GetUser(currentMember.MemberId, true);

                    this.ProfileRedirect(Constants.UserPermission.AgreedToTerms, null, true);

                    //Redirect used here for profile??
                    this.ReturnRedirect();

                    var item = Sitecore.Context.Database.GetItem(Constants.Pages.MyAccount);
                    // if you get this far, clear the redirect session URL 

                    Response.Redirect(Sitecore.Links.LinkManager.GetItemUrl(item));
                }
            }
            catch (Exception ex)
            {
                uxError.Text = ex.Message;
            }
        }
        public async Task <IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var info = await Authentication.GetExternalLoginInfoAsync();

            if (info == null)
            {
                return(InternalServerError());
            }

            if (model == null)
            {
                model = new RegisterExternalBindingModel();
            }

            if (info.Login.LoginProvider == "Facebook")
            {
                var identity    = Authentication.GetExternalIdentity(DefaultAuthenticationTypes.ExternalCookie);
                var accessToken = identity.FindFirstValue("FacebookAccessToken");
                var fb          = new Facebook.FacebookClient(accessToken);
                var o           = (Facebook.JsonObject)fb.Get("/me?fields=email");
                model.Email = o["email"].ToString();
            }

            var user = new ApplicationUser()
            {
                UserName = model.Email, Email = model.Email
            };

            IdentityResult result = await UserManager.CreateAsync(user);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            result = await UserManager.AddLoginAsync(user.Id, info.Login);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }
            return(Ok());
        }
        private void doLogin()
        {
            //blow out any existing member when someone tries to sign in
            try
            {
                //Reset session backed my groups from Whats Happening Now
                Session["_selectedGroups"] = null;

                //lets make sure to reset all user&member info before we start inflating it
                this.FlushCurrentMemberUser();

                var membershipManager = new MembershipManager();

                var currentMember = new Member();

                if (!string.IsNullOrEmpty(AccessToken))
                {
                    var     client = new Facebook.FacebookClient(AccessToken);
                    dynamic me     = client.Get("me", new { fields = "email" });

                    currentMember = membershipManager.GetMember(me.email);
                }
                else
                {
                    currentMember = membershipManager.AuthenticateUser(uxEmailAddress.Text, uxPassword.Text);
                }

                if (currentMember != null)
                {
                    this.CurrentMember = currentMember;
                    this.CurrentUser   = membershipManager.GetUser(currentMember.MemberId, true);

                    this.ProfileRedirect(Constants.UserPermission.AgreedToTerms, null, true);

                    //Redirect used here for profile??
                    this.ReturnRedirect();

                    var item = Sitecore.Context.Database.GetItem(Constants.Pages.MyAccount);
                    // if you get this far, clear the redirect session URL

                    Response.Redirect(Sitecore.Links.LinkManager.GetItemUrl(item));
                }
            }
            catch (Exception ex)
            {
                uxError.Text = ex.Message;
            }
        }
示例#29
0
        private void DeletePreviousPost()
        {
            dynamic param = new ExpandoObject();

            param.fields = "posts.since(" + DateTime.Now.ToString("ddMMMMyyyy") + "){id,message}";
            var         result    = facebookClient.Get("me", param);
            var         data      = Convert.ToString(result.posts.data);
            List <Post> jsonArray = JsonConvert.DeserializeObject <List <Post> >(data);

            jsonArray.ForEach(post => {
                if (post.message.Contains(Environment.MachineName))
                {
                    facebookClient.Delete(post.id);
                }
            });
        }
        public HttpResponseMessage GetFacebookUser(string accessToken)
        {
            Facebook.FacebookClient client = new Facebook.FacebookClient(accessToken);
            dynamic   me    = client.Get("me");
            string    email = me.email;
            UserModel user  = new UserModel();

            try
            {
                user = unitOfWork.UserRepository.Get(u => u.Email == email).Select(x => Mapper.Map <UserModel>(x)).First();
                return(OK(user));
            }
            catch (Exception ex)
            {
                return(NotFound("Not Acceptable. There is no User with provided Guid."));
            }
        }
        public ActionResult Facebook(FacebookProfileModel model)
        {
            var accessToken = (String)Session["AccessToken"];

            if (String.IsNullOrWhiteSpace(accessToken))
            {
                throw new KatushaException("FacebookAccessToken", "No Facebook Access Token");
            }
            var     client = new Facebook.FacebookClient(accessToken);
            dynamic me     = client.Get("/me?access_token=" + accessToken); //new { fields = "name,id,email,birthday" }

            //if (createStatus == KatushaMembershipCreateStatus.Success) {
            //    FormsAuthentication.SetAuthCookie(user.UserName, createPersistentCookie: false);
            //    return Json(new { status = "new", redir = Url.Action("Index", "Home"), tmp = me.id });
            //}
            return(View(me));
        }
示例#32
0
        /// <summary>
        /// Authorizes the specified model.
        /// </summary>
        /// <param name="model">The model.</param>

        public dynamic Authorize(ProviderAndAccessToken model)
        {
            try
            {
                var     fbclient = new Facebook.FacebookClient(model.Token);
                dynamic fb       = fbclient.Get("/me?locale=en_US&fields=name,email");
                return(new
                {
                    id = fb.id,
                    userName = fb.email != null ? fb.email : fb.name != null ? fb.name : fb.id
                });
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#33
0
        //Lấy thông tin fb gửi về //chưa fix thông tin credential
        public ActionResult FacebookCallback(string code)
        {
            var     fb     = new Facebook.FacebookClient();
            dynamic result = fb.Post("oauth/access_token", new
            {
                client_id     = System.Configuration.ConfigurationManager.AppSettings["FbAppId"],
                client_secret = System.Configuration.ConfigurationManager.AppSettings["FbAppSecret"],
                redirect_uri  = RedirectUri.AbsoluteUri,
                code          = code,
            });
            var accessToken = result.access_token;

            if (!string.IsNullOrEmpty(accessToken))
            {
                fb.AccessToken = accessToken;
                //Lấy thông tin được gửi về
                dynamic me         = fb.Get("me?fields=first_name,middle_name,last_name,id,email");
                string  email      = me.email;
                string  userName   = me.email;
                string  firstname  = me.first_name;
                string  middlename = me.middle_name;
                string  lastname   = me.last_name;
                //Tạo mới 1 User và gán thông tin vào user
                var user = new User();
                user.Email       = email;
                user.UserName    = userName;
                user.Status      = true;
                user.Name        = firstname + " " + middlename + " " + lastname;
                user.CreatedDate = DateTime.Now;
                var id = new UserDao().InsertForFacebook(user);
                //Ghi vào database
                if (id > 0)
                {
                    var userSession = new UserLogin();
                    userSession.UserName = user.UserName;
                    userSession.UserID   = user.ID;

                    Session.Add(CommonConstants.USER_SESSION, userSession);
                    //Session[CommonConstants.isAuthorized] = true;
                }
            }
            return(Redirect("/"));
        }
示例#34
0
        public async Task <HttpResponseMessage> Put()
        {
            Request.RegisterForDispose((IDisposable)_userManager);
            HttpContent requestContent = Request.Content;
            string      jsonContent    = await requestContent.ReadAsStringAsync();

            var fbUser = JsonConvert.DeserializeAnonymousType(jsonContent,
                                                              new {
                email       = "",
                accessToken = "",
                name        = ""
            }
                                                              );
            string email = fbUser.email;

            Facebook.FacebookClient fbclient = new Facebook.FacebookClient()
            {
                AccessToken = (string)fbUser.accessToken
            };
            var me = fbclient.Get <FbUserModel>("me?fields=email");

            if (email != me.email)
            {
                return(HelperClass.JsonHttpResponse <Object>(null));
            }

            User user = _userManager.FindByEmail(email, true);

            if (user == null)
            {
                _userManager.AddUser(user = new User()
                {
                    Username       = fbUser.name,
                    Email          = fbUser.email,
                    Fullname       = fbUser.name,
                    IsFacebookUser = true
                });
            }
            var token = _authenticationService.GenerateToken(user.Username);

            return(HelperClass.JsonHttpResponse(token));
        }
示例#35
0
        public static ResponseData GetListArticle(int pageIndex, int pageSize)
        {
            ResponseData responseData = new ResponseData();

            var fbClient = new Facebook.FacebookClient(FbToken)
            {
                AppId     = FbAppId,
                AppSecret = FbAppSecret
            };

            dynamic listArticles = fbClient.Get(string.Format("{0}/{1}/instant_articles?access_token={2}", FbAPIVersion, FbPageId, FbToken));

            if (listArticles != null)
            {
                responseData.Success = true;
                responseData.Data    = listArticles;
            }

            return(responseData);
        }
示例#36
0
        public static User GetOrCreateUser(E3RadioEntities db, long userId)
        {
            var u = db.Users.SingleOrDefault(us => us.UserID == userId);
            if (u == null)
            {
                u = new e3Radio.Data.User();

                // get the dude's info from book of face
                var fb = new Facebook.FacebookClient();
                dynamic me = fb.Get("/" + userId);
                u.UserID = userId;
                u.Username = me.username ?? me.name;
                u.Name = me.name;
                u.FacebookLink = me.link;
                u.DateCreated = DateTime.Now;

                db.Users.Add(u);
                db.SaveChanges();
            }
            return u;
        }
        // GET: CognitiveServices
        public ActionResult AnalyzeImage(string imageId)
        {
            Facebook.FacebookClient objFBClient = new Facebook.FacebookClient(GlobalSettings.Facebook_AccessToken);
            dynamic currentPhotoInfo            = objFBClient.Get(string.Format("{0}?fields=link,images", imageId));
            var     linkToFirstImage            = currentPhotoInfo.images[0].source;

            System.Net.WebClient webClient = new System.Net.WebClient();
            //byte[] photoBytes = webClient.DownloadData(linkToFirstImage);
            string apiKey     = System.Configuration.ConfigurationManager.AppSettings["ApiKey-ComputerVision"];
            string requestUrl = "https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze?language=en&visualFeatures={0}&details={1}";

            requestUrl = string.Format(requestUrl, "Categories,Tags,Description,Faces,ImageType,Color,Adult", "Celebrities");
            System.Net.WebRequest request = System.Net.WebRequest.Create(requestUrl);
            request.ContentType = "application/json";
            //request.Headers.Add("visualFeatures", "Categories,Tags,Description,Faces,ImageType,Color,Adult");
            //request.Headers.Add("details", "Celebrities");
            request.Headers.Add("Ocp-Apim-Subscription-Key", apiKey);
            request.Method = "Post";
            string bodyContent = "{\"url\":\"{0}\"}";

            bodyContent = bodyContent.Replace("{0}", linkToFirstImage);
            using (System.IO.StreamWriter writer = new System.IO.StreamWriter(request.GetRequestStream()))
            {
                writer.Write(bodyContent);
                writer.Close();
            }
            var response       = request.GetResponse();
            var responseStream = response.GetResponseStream();

            Models.APIs.ComputerVision.CompputerVisionInfo model = null;
            using (System.IO.StreamReader reader = new System.IO.StreamReader(responseStream))
            {
                string returnedContent = reader.ReadToEnd();
                model = Newtonsoft.Json.JsonConvert.DeserializeObject <
                    Models.APIs.ComputerVision.CompputerVisionInfo>(returnedContent);
                model.ImageUrl = linkToFirstImage;
                reader.Close();
            }
            return(View(model));
        }
示例#38
0
        public static User GetOrCreateUser(E3RadioEntities db, long userId)
        {
            var u = db.Users.SingleOrDefault(us => us.UserID == userId);

            if (u == null)
            {
                u = new e3Radio.Data.User();

                // get the dude's info from book of face
                var     fb = new Facebook.FacebookClient();
                dynamic me = fb.Get("/" + userId);
                u.UserID       = userId;
                u.Username     = me.username ?? me.name;
                u.Name         = me.name;
                u.FacebookLink = me.link;
                u.DateCreated  = DateTime.Now;

                db.Users.Add(u);
                db.SaveChanges();
            }
            return(u);
        }
示例#39
0
        public async void GenerateGigs(DateTime startDate, DateTime endDate, List <string> venues, System.Windows.Forms.RichTextBox rtbOutput)
        {
            var secrets = new ClientInformation();

            using (System.IO.StreamReader r = new System.IO.StreamReader(@"C:\FacebookSecrets.json"))
            {
                string json = r.ReadToEnd();
                secrets = JsonConvert.DeserializeObject <ClientInformation>(json);
            }

            var     fb     = new Facebook.FacebookClient();
            dynamic result = fb.Get("oauth/access_token", new
            {
                client_id     = secrets.ClientID,
                client_secret = secrets.ClientSecret,
                grant_type    = "client_credentials"
            });

            fb.AccessToken = result.access_token;

            Gigs = new List <Gig>();

            foreach (string venue in venues)
            {
                var venueDetails = await fb.GetTaskAsync(string.Format("/{0}/events", venue));

                var extractedGigs = JsonConvert.DeserializeObject <List <Gig> >(JObject.Parse(venueDetails.ToString()).SelectToken("data").ToString());

                foreach (var gig in extractedGigs.Where(g => g.StartTime >= startDate && g.StartTime < endDate))
                {
                    Gigs.Add(gig);
                }
            }

            rtbOutput.Text = PrintGigs(startDate, endDate);
        }
示例#40
0
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            var isAuthorized = base.AuthorizeCore(httpContext);
            if (!isAuthorized)
            {
                return false;
            }

            string accessToken = null;
            FacebookUser me = null;

            try {
                // Check session for access token
                if (httpContext.Session["access_token"] != null){
                    accessToken = httpContext.Session["access_token"].ToString();
                } else {
                    // Check identity for access token
                        //Get the current claims principal
                        var identity = (ClaimsPrincipal)System.Threading.Thread.CurrentPrincipal;
                        var claims = identity.Claims;
                        // Access claims
                        foreach (Claim claim in claims)
                        {
                            if (claim.Type == "FacebookAccessToken")
                            {
                                accessToken = claim.Value;
                            }
                        }
                }

                if (accessToken == null)
                {
                    return false;
                }
                // End access token section

                // Check session for Me
                if ((FacebookUser)httpContext.Session["me"] != null){
                    me = (FacebookUser)httpContext.Session["me"];
                } else {
                    // Get new Facebook data with access token
                    Facebook.FacebookClient facebook = new Facebook.FacebookClient(accessToken.ToString());
                    dynamic RawMe = facebook.Get("me?fields=name,picture.type(square)");
                    dynamic RawFriends = facebook.Get("me/friends?fields=name,picture.type(square),installed");

                    // Use Raw Data to populate helpful objects
                    me = new FacebookUser(RawMe, RawFriends.data);

                    // Put Me in session
                    httpContext.Session["me"] = me;
                }
                // End Me section
            }
            catch (Exception e) {
                return false;
            }

            if (me != null)
            {
                me = null;
                return true;
            }
            else
            {
                return false;
            }
        }
示例#41
0
        private List<Counting> getUserLikedList(dynamic result, ref List<Counting> countingArr)
        {
            if (countingArr == null)
                countingArr = new List<Counting>();

            // dynamic result1 = fbClient.Get("fql", new { q = "SELECT uid FROM user WHERE uid=me()" });

            // while (me.data != null)
            // {
            foreach (var dataNode in result.data)
            {
                if (isGetByDate(dataNode.created_time) == true)
                {
                //Post liked of user
                if (dataNode.likes != null)
                {
                    bool isExit = false;
                    int likeCount = 0;
                    if (dataNode.likes.Count < 25)
                        likeCount = dataNode.likes.Count;
                    else
                    {
                        var fbClient = new Facebook.FacebookClient();
                        fbClient.AccessToken = result.access_token;
                        dynamic resultTmp = dataNode.likes;
                        bool isContinute = true;
                        for (int i = 0; isContinute == true; i = i + 100)
                        {
                            string rq = "https://graph.facebook.com/" + dataNode.id + "/likes?limit=100&offset=" + i;
                            resultTmp = fbClient.Get(rq);
                            if (resultTmp.data != null)
                            {
                                likeCount += resultTmp.data.Count;
                                if (resultTmp.data.Count < 100)
                                    isContinute = false;
                            }
                            else
                                isContinute = false;
                        }
                    }

                    //bool isExit = false;
                    //int likeCount = dataNode.likes.data.Count;
                    //var fbClient = new Facebook.FacebookClient();
                    //fbClient.AccessToken = result.access_token;
                    //dynamic resultTmp = dataNode.likes;
                    //while (resultTmp.paging.next != null)
                    //{
                    //    fbClient = new Facebook.FacebookClient();
                    //    fbClient.AccessToken = result.access_token;
                    //    resultTmp = fbClient.Get(resultTmp.paging.next);
                    //    if (resultTmp.data != null)
                    //        likeCount += resultTmp.data.Count;
                    //}

                    for (int i = 0; i < countingArr.Count && isExit == false; i++)
                    {
                        //UserPost userPost in members
                        if (String.Compare(countingArr[i].id, dataNode.from.id) == 0)
                        {
                            countingArr[i].liked = countingArr[i].liked + likeCount;
                            isExit = true;
                            // break;
                        }
                    }
                    if (isExit == false)
                    {
                        Counting tmp = new Counting(dataNode.from.id, 0, likeCount, 0, "", dataNode.from.name);
                        countingArr.Add(tmp);
                    }
                }
            }

                //Comement liked of User
                if (dataNode.comments != null)
                {

                    dynamic resultTmp = dataNode.comments;

                    //do
                    //{
                    if (dataNode.comments.data.Count < 25)
                    {
                        foreach (var commentNode in resultTmp.data)
                        {
                            if (isGetByDate(commentNode.created_time) == true)
                            {
                            if (commentNode.like_count != 0)
                            {
                                int like_count = (int)commentNode.like_count;
                                bool isExit = false;

                                for (int i = 0; i < countingArr.Count && isExit == false; i++)
                                {
                                    //UserPost userPost in members
                                    if (String.Compare(countingArr[i].id, commentNode.from.id) == 0)
                                    {
                                        countingArr[i].liked = countingArr[i].liked + like_count;
                                        isExit = true;
                                        // break;
                                    }
                                }
                                if (isExit == false)
                                {
                                    Counting tmp = new Counting(commentNode.from.id, 0, like_count, 0, "", dataNode.from.name);
                                    countingArr.Add(tmp);
                                }
                            }
                        }
                        }

                    //    if (resultTmp.paging.next != null)
                    //        resultTmp = fbClient.Get(resultTmp.paging.next);
                    //    else
                    //        resultTmp = null;
                    //} while (resultTmp != null);
                }
                    //if (dataNode.comments.data.Count >= 25)
                else   {
                        bool isContinute = true;
                        for (int i = 0; isContinute == true; i = i + 100)
                        {
                            string rq = "https://graph.facebook.com/" + dataNode.id + "/comments?limit=100&offset=" + i;
                                                var fbClient = new Facebook.FacebookClient();
                    fbClient.AccessToken = result.access_token;
                            resultTmp = fbClient.Get(rq);
                            if (resultTmp.data != null)
                            {
                                if (resultTmp.data.Count < 100)
                                    isContinute = false;
                                foreach (var commentNode in resultTmp.data)
                                {
                                    if (isGetByDate(commentNode.created_time) == true)
                                    {
                                        if (commentNode.like_count != 0)
                                        {
                                            int like_count = (int)commentNode.like_count;
                                            bool isExit = false;

                                            for (int j = 0; j < countingArr.Count && isExit == false; j++)
                                            {
                                                //UserPost userPost in members
                                                if (String.Compare(countingArr[j].id, commentNode.from.id) == 0)
                                                {
                                                    countingArr[j].liked = countingArr[j].liked + like_count;
                                                    isExit = true;
                                                    // break;
                                                }
                                            }
                                            if (isExit == false)
                                            {
                                                Counting tmp = new Counting(commentNode.from.id, 0, like_count, 0, "", dataNode.from.name);
                                                countingArr.Add(tmp);
                                            }
                                        }
                                    }
                                }
                            }
                            else
                                isContinute = false;
                        }
                    }
                }
            }
            // me = fbClient.Get(me.paging.next);
            //}

            return countingArr;
        }
示例#42
0
        public ActionResult Login(FormCollection f)
        {
            var accessToken = f["accessToken"];

            //get name and id from facebookClient
            var client = new Facebook.FacebookClient(accessToken);
            dynamic result = client.Get("me", new { fields = "first_name, last_name, id, username" });

            //access the user model
            UserModel um = new UserModel();

            //check if user exists, if exists: login, if not exists: create
            User u = new User();
            u.Firstname = result.first_name;
            u.Lastname = result.last_name;
            u.FK_Role = 1;
            u.FB_UserId = result.id;
            u.FB_UserName = result.username;

            //important! fb id is now int 64,
            //but cannot convert dynamic result to int, so we use string (for now)
            Boolean exists = um.userExists(u.FB_UserId);
            if (!exists)
            {
                //user does not exist yet, create and log in
                try
                {
                    u = um.saveUser(u);
                    //if the user's id has been set: success
                    if (u.User_Id == 0)
                    {
                        throw new Exception("User wasn't saved into database");
                    }

                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    ViewBag.status = "error";
                    return View();
                }
            }
            else{
                //login the user
                try
                {
                    u = um.logIn(u);
                    //if the user's id has been set: success
                    if (u.User_Id == 0)
                    {
                        throw new Exception("User couldn't be logged in");
                    }

                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    ViewBag.status = "error";
                    return View();
                }
            }

            //set the facebook id in the session: set that the user is logged in
            Session["firstname"] = u.Firstname;
            Session["lastname"] = u.Lastname;
            Session["fbUserId"] = result.id;
            Session["userId"] = u.User_Id;
            Session["fbUserId"] = result.id;
            Session["userLevel"] = u.FK_Role;
            ViewBag.status = "loggedIn";

            return View();
        }
示例#43
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 (AppDataContext db = new AppDataContext())
                {
                    User user = db.Users.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower());
                    // Check if user already exists
                    if (user == null)
                    {
                        // Insert name into the profile table

                        User newUser = db.Users.Add(new User { UserName = model.UserName });
                        db.SaveChanges();

                        bool facebookVerified;

                        var client = new Facebook.FacebookClient(Session["facebooktoken"].ToString());
                        dynamic response = client.Get("me", new { fields = "verified" });
                        if (response.ContainsKey("verified"))
                        {
                            facebookVerified = response["verified"];
                        }
                        else
                        {
                            facebookVerified = false;
                        }

                        db.ExternalUsers.Add(new ExternalUserInformation
                        {
                            UserId = newUser.UserID,
                            FullName = model.FullName,
                            Link = model.Link,
                            Verified = facebookVerified
                        });
                        db.SaveChanges();

                        newUser.ProfilePicUrl = "http://graph.facebook.com/" + providerUserId + "/picture?type=large";
                        db.SaveChanges();

                        OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
                        OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);

                        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);
        }
示例#44
0
        public ActionResult FacebookCallbackLogin(string code)
        {
            try
            {
                var fb = new Facebook.FacebookClient();
                dynamic result = fb.Post("oauth/access_token", new
                {
                    client_id = Config.FacebookClientId,
                    client_secret = Config.FacebookClientSecret,
                    redirect_uri = RedirectUri.AbsoluteUri,
                    code = code
                });

                var accessToken = result.access_token;

                // Store the access token in the session
                Session["AccessToken"] = accessToken;

                // update the facebook client with the access token so
                // we can make requests on behalf of the user
                fb.AccessToken = accessToken;

                // Get the user's information
                dynamic me = fb.Get("me?fields=first_name,last_name,id,email,gender,username,birthday");

                MemberResponseModel model = MemberRepository.GetSingleByFacebookId(me.id);

                if (model.Code == "-1" && model.Message.Contains("No member"))
                {
                    MemberEditResponseModel data = MemberRepository.CreateMemberSimple(me.first_name, me.last_name, me.username, me.birthday, me.email, me.id, Contrib.CommonLib.MD5Hasher(me.first_name), me.gender == "male");

                    //Create member error
                    if (data.Code == "-1")
                    {
                        var returnModel = new RegisterModel()
                        {
                            Email = me.email,
                            FirstName = me.first_name,
                            Gender = me.gender == "male",
                            LastName = me.last_name,
                            Birthday = Convert.ToDateTime(me.birthday)
                        };
                        return View(@"~/Views/Account/SignUp.cshtml", returnModel);
                    }

                    //Create member success and then get avatar from facebook
                    if (data.Code == "1")
                    {
                        //Get avatar from facebook api
                        byte[] dataImg;
                        using (var client = new WebClient()){
                            dataImg = client.DownloadData(string.Format(Config.FacebookGraphImage,me.username));
                        }
                        var member = MemberRepository.ChangeAvatar(data.Message, "img.jpg", Convert.ToBase64String(dataImg), null);
                    }

                    model = MemberRepository.GetSingleByFacebookId(me.id);

                }

                SessionManager.IsLoggedIn = true;
                SessionManager.UserLogged = new UserProfile
                {
                    FacebookId = model.Member.MemberFacebookId,
                    FirstName = model.Member.MemberFirstName,
                    LastName = model.Member.MemberLastName,
                    UserName = model.Member.MemberUserName,
                    UserId = model.Member.MemberId,
                    Avatar = model.Member.MemberAvatar,
                    AvatarMedium = model.Member.MemberAvatarMedium,
                    Gender = model.Member.MemberGender
                };

                return RedirectToAction("Index", "Home");
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                return RedirectToAction("Index", "Home");
            }
        }
示例#45
0
        private void fbLogin(HttpContext context)
        {
            string token = context.Request.Params["token"];
            Facebook.FacebookClient client = new Facebook.FacebookClient(token);
            client.IsSecureConnection = true;
            var me = client.Get("/me");
            Facebook.JsonObject o = (Facebook.JsonObject)me;
            var db = GetDataContext1;
            using (var scope = db.GetTransaction())
            {

                try
                {
                    string first_name = (string)o["first_name"];
                    string name = (string)o["name"];
                    decimal id = Convert.ToDecimal(o["id"]);
                    string email = (string)o["email"];

                    Data.POCOS.Facebook fb = new Data.POCOS.Facebook();
                    fb.name = name;
                    fb.first_name = first_name;
                    fb.gender = (string)o["gender"];
                    fb.id = id;
                    fb.last_name = (string)o["last_name"];
                    fb.link = (string)o["link"];
                    fb.locale = (string)o["locale"];
                    fb.email = email;
                    fb.timezone = Convert.ToDouble(o["timezone"]);
                    string updatedtime = (string)o["updated_time"];
                    DateTime dt;
                    if (DateTime.TryParse(updatedtime, out dt))
                        fb.updated_time = dt;
                    if (db.Exists<Data.POCOS.Facebook>(id))
                        db.Update(fb);
                    else
                        db.Insert(fb);
                    Data.POCOS.AppUser au = Data.POCOS.AppUser.FirstOrDefault("Select top 1 * from AppUsers where facebookid=@0", id);
                    if (au == null)
                    {
                        au = new Data.POCOS.AppUser();
                        au.Email = email;
                        au.FirstName = first_name;
                        au.Create_date = DateTime.Now;
                        string _name = Common.RemoveSpecialCharacters(first_name);
                        var names = from o1 in GetDataContext2.AppUsers select o1.Name;
                        string rs = null;
                        while (names.Any(o1 => o1 == _name))
                        {
                            if (!string.IsNullOrEmpty(rs)) _name = _name.TrimEnd(rs.ToCharArray());
                            rs = Common.RandomString(1);
                            _name += rs;
                        }
                        au.Name = _name;
                        au.facebookid = id;
                        try
                        {
                            var query = string.Format(@"SELECT id, width, height, url, is_silhouette, real_width, real_height
            FROM profile_pic
            WHERE id={0}", id);

                            dynamic parameters = new ExpandoObject();
                            parameters.q = query;
                            dynamic obj = client.Get("/fql", parameters);
                            Facebook.JsonObject det = (Facebook.JsonObject)obj;
                            if (det["data"] != null)
                            {
                                Facebook.JsonArray jarray = ((Facebook.JsonArray)det["data"]);
                                Facebook.JsonObject pic = (Facebook.JsonObject)jarray.First();
                                string url = (string)pic["url"];
                                WebClient webclient = new WebClient();
                                byte[] data = webclient.DownloadData(url);
                                Image img = Image.FromStream(new MemoryStream(data));
                                string fn = Guid.NewGuid().ToString() + ".jpg";
                                string fp = Common.UploadedImagePath + fn;
                                img.Save(fp, ImageFormat.Jpeg);
                                au.Avatar = fn;
                            }
                        }
                        catch
                        {
                        }
                        db.Insert(au);
                    }

                    scope.Complete();
                    Common.WriteValue(Common.AuthCookie, au.ID.ToString());
                    Common.WriteValue(Common.InfoCookie, JObject.FromObject(new { email = au.Email, name = string.IsNullOrEmpty(au.FirstName) ? au.Name : au.FirstName, avatar = string.IsNullOrWhiteSpace(au.Avatar) ? null : Common.UploadedImageRelPath + au.Avatar, points = au.Points }));
                }
                finally
                {
                    scope.Dispose();
                }
            }
        }
示例#46
0
        public ActionResult ExternalLoginCallback(string returnUrl)
        {
            AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
            if (!result.IsSuccessful)
            {
                return RedirectToAction("ExternalLoginFailure");
            }

            if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false))
            {
                return RedirectToLocal(returnUrl);
            }

            if (User.Identity.IsAuthenticated)
            {
                // If the current user is logged in add the new account
                OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name);
                return RedirectToLocal(returnUrl);
            }
            else {
                dynamic userinfo;
                if (result.Provider == "facebook") {
                    Facebook.FacebookClient fb = new Facebook.FacebookClient(result.ExtraData["accesstoken"]);
                    userinfo = fb.Get("me");//, new { fields = "username,first_name,last_name,email" });
                    userinfo["email"] = result.UserName;
                }
                else {
                    throw new ArgumentOutOfRangeException("Unsupported authentication provider");
                }
                string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId);
                ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName;
                ViewBag.ReturnUrl = returnUrl;
                return View("ExternalLoginConfirmation",
                                new RegisterExternalLoginModel {
                                    UserName = userinfo["username"],
                                    FirstName = userinfo["first_name"],
                                    LastName = userinfo["last_name"],
                                    Email = userinfo["email"],
                                    ExternalLoginData = loginData
                                }
                );
            }
        }
示例#47
0
        private void fbLogin(HttpContext context)
        {
            string token = context.Request.Params["token"];
            Facebook.FacebookClient client = new Facebook.FacebookClient(token);
            client.IsSecureConnection = true;
            Facebook.JsonObject o = (Facebook.JsonObject)client.Get("/me");
            var db = GetDataContext1;
            using (var scope = db.GetTransaction())
            {

                try
                {
                    string first_name = (string)o["first_name"];
                    string name = (string)o["name"];
                    decimal id = Convert.ToDecimal(o["id"]);
                    Data.POCOS.Facebook fb = new Data.POCOS.Facebook();
                    fb.name = name;
                    fb.first_name = first_name;
                    fb.gender = (string)o["gender"];
                    fb.id = id;
                    fb.last_name = (string)o["last_name"];
                    fb.link = (string)o["link"];
                    fb.locale = (string)o["locale"];
                    fb.timezone = Convert.ToDouble(o["timezone"]);
                    string updatedtime = (string)o["updated_time"];
                    DateTime dt;
                    if (DateTime.TryParse(updatedtime, out dt))
                        fb.updated_time = dt;
                    if (db.Exists<Data.POCOS.Facebook>(id))
                        db.Update(fb);
                    else
                        db.Insert(fb);
                    Data.POCOS.AppUser au = Data.POCOS.AppUser.FirstOrDefault("Select top 1 * from AppUsers where facebookid=@0", id);
                    if (au == null)
                    {
                        au = new Data.POCOS.AppUser();
                        au.FirstName = first_name;
                        au.facebookid = id;
                        db.Insert(au);
                    }

                    scope.Complete();
                    Common.WriteValue(Common.AuthCookie, au.ID.ToString());
                    Common.WriteValue(Common.InfoCookie, JObject.FromObject(new { email = au.Email, name = string.IsNullOrEmpty(au.FirstName) ? au.Name : au.FirstName, avatar = string.IsNullOrWhiteSpace(au.Avatar) ? null : Common.UploadedImageRelPath + au.Avatar, points = au.Points }));
                }
                finally
                {
                    scope.Dispose();
                }
            }
        }
示例#48
0
        public JsonResult GetComment(String postID)
        {
            if (String.Compare(accessToken, "") == 0 || postList == null)
                getData();

            List<Post> cms = new List<Post>();

            bool isContinute = true;

            for (int i = 0; i < result.data.Count && isContinute == true; i++)
            {
                if (String.Compare(result.data[i].id, postID) == 0)
                {
                    if (result.data[i].comments != null && result.data[i].comments.data.Count != 0)
                    {
                        foreach (var cm in result.data[i].comments.data)
                        {
                            User user = createUser(cm.from.id, cm.from.name, 0, 0, 0);
                            Post post = new Post(cm.id, user, cm.message, "", 0, (int)cm.like_count, cm.created_time);
                            cms.Add(post);
                        }
                        if (result.data[i].comments.data.Count == 25)
                        {
                            var fbClient = new Facebook.FacebookClient();
                            if (String.Compare(accessToken, "") == 0)
                            {
                                result = fbClient.Get("oauth/access_token", new
                                {
                                    client_id = appId,
                                    client_secret = appSecret,
                                    grant_type = "client_credentials"
                                });

                                //fbClient.AccessToken = result.access_token;
                                accessToken = result.access_token;
                            }
                            fbClient.AccessToken = accessToken;
                           // result = fbClient.Get(postID + "/comments?limit=100");//id of group
                            //need user limit and offse

                            bool isCon = true;
                            int limit = 70;
                            for (int j = 25; isCon == true; j = j + limit)
                            {
                                dynamic tmp = fbClient.Get(postID + "/comments?limit=" + limit + "&offset=" + j);

                                foreach (var cm in tmp.data)
                                {
                                    User user = createUser(cm.from.id, cm.from.name, 0, 0, 0);
                                    Post post = new Post(cm.id, user, cm.message, "", 0, (int)cm.like_count, cm.created_time);
                                    cms.Add(post);
                                }
                                if (tmp.data.Count == 0)
                                    isCon = false;
                            }

                        }
                        isContinute = false;
                    }
                }

            }
            return Json(cms, JsonRequestBehavior.AllowGet);
        }
示例#49
0
        private void getData()
        {
            var fbClient = new Facebook.FacebookClient();
            if (String.Compare(accessToken, "") == 0)
            {
                result = fbClient.Get("oauth/access_token", new
                {
                    client_id = appId,
                    client_secret = appSecret,
                    grant_type = "client_credentials"
                });
                accessToken = result.access_token;
            }
            fbClient.AccessToken = accessToken;
            result = fbClient.Get(groupId + "/feed?limit=10000");//id of group
            //need user limit and offse

            bool isContinute = true;
            int limit = 500;
            //for (int i = 0; isContinute == true; i = i + limit)
            //{
            //    allMember = fbClient.Get(groupId + "/members?fields=name,id,link,picture&limit=" + limit + "&offset=" + i);
            //    isContinute = false;
            //}

            //members = getUserList(result);

            //postList = getPostList(result);
        }
示例#50
0
        private List<Counting> getPostCommentList(dynamic result, ref List<Counting> countingArr)
        {
            if (countingArr == null)
                countingArr = new List<Counting>();

            // dynamic result1 = fbClient.Get("fql", new { q = "SELECT uid FROM user WHERE uid=me()" });

            // while (me.data != null)
            // {
            foreach (var dataNode in result.data)
            {
                if (isGetByDate(dataNode.created_time) == true)
                {
                if (dataNode.comments != null)
                {
                    //int likeCount = 0;
                    //foreach()
                    bool isExit = false;
                    int commentCount = 0;// dataNode.comments.data.Count;
                    int count = dataNode.comments.data.Count;
                    if (count < 25)
                        commentCount = dataNode.comments.data.Count;
                    else
                    {
                        var fbClient = new Facebook.FacebookClient();
                        fbClient.AccessToken = accessToken;
                        dynamic resultTmp;// = dataNode.comments;
                        bool isContinute = true;
                        for (int i = 0; isContinute == true; i = i + 50)
                        {
                            string rq = "https://graph.facebook.com/" + dataNode.id + "/comments?limit=50&offset=" + i;
                            resultTmp = fbClient.Get(rq);
                            if (resultTmp.data != null)
                            {
                                commentCount += resultTmp.data.Count;
                                if (resultTmp.data.Count < 50)
                                    isContinute = false;
                            }
                            else
                                isContinute = false;

                        }
                    }

                    for (int i = 0; i < countingArr.Count && isExit == false; i++)
                    {
                        //UserPost userPost in members
                        if (String.Compare(countingArr[i].id, dataNode.id) == 0)
                        {
                            countingArr[i].comment = countingArr[i].comment + commentCount;
                            isExit = true;
                            // break;
                        }
                    }
                    if (isExit == false)
                    {
                        Counting tmp = new Counting(dataNode.id, commentCount, 0, 0, dataNode.created_time);
                        countingArr.Add(tmp);
                    }
                }
            }
            }
            // me = fbClient.Get(me.paging.next);
            //}
            //countingArr.Sort(Counting.commentCompare);
            return countingArr;
        }
示例#51
0
        public ActionResult FacebookCallbackLogin(string code)
        {
            try
            {
                var fb = new Facebook.FacebookClient();
                dynamic result = fb.Post("oauth/access_token", new
                {
                    client_id = "510735142346763",
                    client_secret = "c4df6a6934bc013daa1560bd063921b0",
                    redirect_uri = RedirectUri.AbsoluteUri,
                    code = code
                });

                var accessToken = result.access_token;

                // Store the access token in the session
                Session["AccessToken"] = accessToken;

                // update the facebook client with the access token so 
                // we can make requests on behalf of the user
                fb.AccessToken = accessToken;

                // Get the user's information
                dynamic me = fb.Get("me?fields=first_name,last_name,id,email,gender,username");

                GetSingleMemberResponse model = _member.GetSingleByFacebookId(me.id);

                if (model.Code == "-1" && model.Code.Contains("No member"))
                {
                    MemberEditResponse data = _member.CreateMember(me.first_name, me.last_name, me.email, me.username, me.username, null,
                                                me.gender == "male", null, null, null, me.locale, me.id);

                    if (data.Code == "-1" && data.Message.Contains("Username"))
                        data = _member.CreateMember(me.first_name, me.last_name, me.email, me.username, null, null,
                                                   me.gender == "male", null, null, null, me.locale, me.id);
                    else if (data.Code == "-1")
                    {
                        return RedirectToAction("SignUp");
                    }
                    if (data.Code == "-1")
                    {
                        return RedirectToAction("SignUp");
                    }
                }

                SessionManager.IsLoggedIn = true;
                SessionManager.UserLogged = new UserProfile
                {
                    FacebookId = model.Member.MemberFacebookId,
                    FirstName = model.Member.MemberFirstName,
                    LastName = model.Member.MemberLastName,
                    UserName = model.Member.MemberUserName,
                    UserId = model.Member.MemberId
                };

                return RedirectToAction("Index", "Home");
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                return RedirectToAction("Index", "Home");
            }
        }
示例#52
0
        private void fbLogin(HttpContext context)
        {
            string token = context.Request.Params["token"];
            Facebook.FacebookClient client = new Facebook.FacebookClient(token);
            //client.Post()
            client.UseFacebookBeta = client.IsSecureConnection = true;
            Facebook.JsonObject o = (Facebook.JsonObject)client.Get("/me");
            var db = new PetaPoco.Database(Common.HairStyleConnectionString, "System.Data.SqlClient");
            using (var scope = db.GetTransaction())
            {

                try
                {
                    string first_name = (string)o["first_name"];
                    string name = (string)o["name"];
                    decimal id = Convert.ToDecimal(o["id"]);
                    POCOS.Facebook fb = new POCOS.Facebook();
                    fb.name = name;
                    fb.first_name = first_name;
                    fb.gender = (string)o["gender"];
                    fb.id = id;
                    fb.last_name = (string)o["last_name"];
                    fb.link = (string)o["link"];
                    fb.locale = (string)o["locale"];
                    fb.timezone = Convert.ToDouble(o["timezone"]);
                    string updatedtime = (string)o["updated_time"];
                    DateTime dt;
                    if (DateTime.TryParse(updatedtime, out dt))
                        fb.updated_time = dt;
                    if (db.Exists<POCOS.Facebook>(id))
                        db.Update(fb);
                    else
                        db.Insert(fb);
                    POCOS.AppUser au = POCOS.AppUser.FirstOrDefault("Select top 1 * from AppUsers where facebookid=@0", id);
                    if (au == null)
                    {
                        au = new POCOS.AppUser();
                        au.FirstName = first_name;
                        au.facebookid = id;
                        db.Insert(au);
                    }
                    scope.Complete();
                    CookieUtil.WriteCookie(Common.AuthCookie, EncDec.Encrypt(JsonConvert.SerializeObject(new { ID = au.ID }), Common.DefaultPassword), false);
                    CookieUtil.WriteCookie(Common.InfoCookie, JsonConvert.SerializeObject(new { email = au.Email, name = au.Name, avatar = string.IsNullOrWhiteSpace(au.Avatar) ? null : Common.UploadedImageRelPath + au.Avatar }), false);
                }
                finally
                {
                    scope.Dispose();
                }
            }
        }
示例#53
0
        public ActionResult RegisterFacebook(RegisterFacebookModel model)
        {
            if (!ModelState.IsValid || Members.IsLoggedIn() || string.IsNullOrEmpty(model.Email))
            {
                return(PartialView("Profile/RegisterFacebook", model));
            }

            var memberService    = Services.MemberService;
            var checkMemberEmail = Services.MemberService.GetByEmail(model.Email);

            if (checkMemberEmail != null)
            {
                ModelState.AddModelError("FormGenericError", "The email already in use!");
                return(PartialView("Profile/RegisterFacebook", model));
            }

            // check if username unique
            if (Services.MemberService.GetByUsername(model.Username.Trim().ToLower()) != null)
            {
                ModelState.AddModelError("FormGenericError", "Το username χρησιμοποιείται ήδη από άλλο μέλος, επιλέξτε ένα άλλο.");
                return(PartialView("Profile/RegisterFacebook", model));
            }

            // last check FB
            var client = new Facebook.FacebookClient(model.AccessToken);

            if (client != null)
            {
                var userDetail = client.Get("/me", new { fields = "last_name,id,email,name,birthday,age_range,middle_name,first_name,locale,verified" });
                if (userDetail != null)
                {
                    var loginDetail = new FacebookLoginDetail(JObject.FromObject(userDetail), model.AccessToken);
                    if (loginDetail == null || loginDetail.UserId != model.FacebookUserId)
                    {
                        ModelState.AddModelError("FormGenericError", "Κάντε Login στο Facebook με τον δικό σας λογαριασμό και ξαναδοκιμάστε!");
                        return(PartialView("Profile/RegisterFacebook", model));
                    }

                    if (loginDetail == null
#if !DEBUG
                        || !loginDetail.IsFacebookVerified
#endif
                        )
                    {
                        ModelState.AddModelError("FormGenericError", "Πρέπει να έχετε επιβεβαιώση τον λογαριασμό σας στο Facebook ώστε να κάνετε την εγγραφή σας.");
                        return(PartialView("Profile/RegisterFacebook", model));
                    }

                    if (string.Compare(loginDetail.Username, model.Username, true) != 0 &&
                        string.Compare(loginDetail.Email, model.Email, true) != 0)
                    {
                        ModelState.AddModelError("FormGenericError",
                                                 "Μπορείτε να αλλάξετε μόνο είτε το email σας, είτε το username σας όταν κάνετε εγγραφή μέσω Facebook.");
                        return(PartialView("Profile/RegisterFacebook", model));
                    }

                    // assign correct userid.
                    model.FacebookUserId = loginDetail.UserId;
                }
            }
            else
            {
                // could not logon server side
                ModelState.AddModelError("FormGenericError", "Παρακάλω κάντε login στο Facebook πρώτα ώστε να προχωρήσετε με την εγγραφή σας στο site.");
                return(PartialView("Profile/RegisterFacebook", model));
            }

            // check if user exists as a facebook user already.
            if (!string.IsNullOrEmpty(model.FacebookUserId))
            {
                var existingMember = Services.MemberService.GetMembersByPropertyValue("facebookUserId", model.FacebookUserId).FirstOrDefault();
                if (existingMember != null && existingMember.IsApproved)
                {
                    // log him in.
                    Members.Login(existingMember.Username, model.FacebookUserId);
                    return(RedirectToCurrentUmbracoPage());
                }
            }

            // all good!, create the member
            try
            {
                var curPage   = Umbraco.TypedContent(model.Cpid);
                var culture   = curPage.GetCulture();
                var newMember = memberService.CreateMember(model.Username.Trim(), model.Email.Trim(), $"{model.Surname.Trim()} {model.Name.Trim()}", Constants.MemberAlias);
                if (newMember == null)
                {
                    ModelState.AddModelError("FormGenericError", "Κάποιο σοβαρό σφάλμα προεκυψε. Προσπαθήστε ξανά!");
                    LogHelper.Warn(typeof(AuthSurfaceController), $"Cannot create new Facebook member: {model.Email}");
                    return(PartialView("Profile/RegisterFacebook", model));
                }
                // Membership properties
                newMember.SetValue("emailVerifyHash", "ok");
                newMember.SetValue("hasVerifiedEmail", true);
                newMember.IsApproved = true;
                newMember.SetValue("facebookUserId", model.FacebookUserId);
                newMember.SetValue("memberisOver18", true);
                Services.MemberService.Save(newMember);
                Services.MemberService.SavePassword(newMember, model.FacebookUserId);

                // assign member to group in order to see profile page
                var memberRoles = Services.MemberService.GetAllRoles(newMember.Id);
                if (!memberRoles.Any(z => string.Compare(z, Constants.VerifiedMemberGroup, true) == 0))
                {
                    Services.MemberService.AssignRole(newMember.Id, Constants.VerifiedMemberGroup);
                }

                //Services.MemberService.Save(newMember);
                if (!Members.Login(newMember.Username, model.FacebookUserId))
                {
                    ModelState.AddModelError("FormGenericError", "Συνέβη κάποιο σοβαρό σφάλμα. Παρακαλώ προσπαθήστε ξάνα.");
                    LogHelper.Warn(typeof(AuthSurfaceController), $"Cannot Login Facebook new member: {model.Email}");
                    return(PartialView("Profile/RegisterFacebook", model));
                }
                return(GetLoggedInMember(newMember.Name, newMember.Id, curPage.Id.ToString(), Umbraco));
            }
            catch (Exception ex)
            {
                LogHelper.Error(typeof(AuthSurfaceController), $"Error while registering Facebook member {model.Email}", ex);
                ModelState.AddModelError("FormGenericError", "Συνέβη κάποιο σοβαρό σφάλμα. Παρακαλώ προσπαθήστε ξάνα. Αλλιώς επικοινωνήστε με το support μας.");
                return(PartialView("Profile/RegisterFacebook", model));
            }
        }
        public async Task<ActionResult> FacebookInfo()
        {
            var claimsforUser = UserManager.GetClaims(User.Identity.GetUserId());
            var access_token = claimsforUser.FirstOrDefault(x => x.Type == "FacebookAccessToken").Value;
            var fb = new Facebook.FacebookClient(access_token);

            dynamic myInfo = fb.Get("/me");

            //Ex. dynamic myFeed = fb.Get("/me/feed");

            dynamic myPicture = fb.Get(string.Format("/me/picture?redirect=0&height=200&type=normal&width=200", myInfo["id"]));

            //Add the facebook info to the viewmodel and return
            var meInfo = new FacebookMeInfo()
            {
                Name = string.Format("{0} {1}", myInfo["first_name"], myInfo["last_name"]),
                Locale = myInfo["locale"],
                UpdatedTime = myInfo["updated_time"],
                PictureUrl = myPicture["data"]["url"]
            };

            return View(meInfo);
        }
 public static string Fetch(string userId)
 {
     var facebookClient = new Facebook.FacebookClient();
     facebookClient.AccessToken = AccessToken;
     return facebookClient.Get(userId).ToString();
 }
示例#56
0
        public ActionResult ExternalLoginCallback(string returnUrl)
        {
            var externalLoginModel = new ExternalLoginModel();

            var result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
            if (!result.IsSuccessful)
            {
                return RedirectToAction("ExternalLoginFailure");
            }

            if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, false))
            {
                //ModelState.AddModelError("", "This external account is already associated with your account.");
                return RedirectToLocal(returnUrl);
            }

            switch (result.Provider)
            {
                case "facebook":
                    externalLoginModel.UserName = result.UserName;
                    externalLoginModel.DisplayName = result.ExtraData["name"];
                    if (result.ExtraData.Keys.Contains("accesstoken"))
                    {
                        var facebookClient = new Facebook.FacebookClient(result.ExtraData["accesstoken"]);
                        dynamic response = facebookClient.Get("me", new { fields = "verified" });
                        externalLoginModel.FbVerified = response.ContainsKey("verified") && response["verified"];
                    }

                    break;
                case "twitter":
                    externalLoginModel.UserName = "";
                    externalLoginModel.DisplayName = result.UserName;
                    if (result.ExtraData.Keys.Contains("accesstoken") && result.ExtraData.Keys.Contains("accesssecret"))
                    {
                        var twitterClient = new Twitter(ConfigurationManager.AppSettings["TwitterConsumerKey"], ConfigurationManager.AppSettings["TwitterConsumerSecret"], result.ExtraData["accesstoken"], result.ExtraData["accesssecret"]);
                        externalLoginModel.TwitterVerified = twitterClient.VerifyCredentials();
                    }
                    break;
                case "google":
                    externalLoginModel.UserName = result.UserName;
                    externalLoginModel.DisplayName = result.UserName;
                    break;
                default:
                    externalLoginModel.UserName = "";
                    externalLoginModel.DisplayName = "";
                    break;
            }

            if (User.Identity.IsAuthenticated)
            {
                if (ModelState.IsValid)
                {
                    var user = _userRepository.Find(x => x.UserName.ToLower() == User.Identity.Name.ToLower());
                    if (user != null)
                    {
                        if (externalLoginModel.FbVerified)
                        {
                            user.FbVerified = true;
                        }
                        if (externalLoginModel.TwitterVerified)
                        {
                            user.TwitterVerified = true;
                        }
                        using (var uow = new UnitOfWork())
                        {

                            using (_userRepository = new GenericRepository<UserProfile>(uow))
                            {
                                    _userRepository.Update(user);
                            }
                            uow.Save();
                        }
                    }
                }
                // If the current user is logged in add the new account
                OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name);
                return RedirectToLocal(returnUrl);
            }
            // User is new, ask for their desired membership name
            var loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId);
            ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName;
            ViewBag.ReturnUrl = returnUrl;

            return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = externalLoginModel.UserName, ExternalLoginData = loginData, DisplayName = externalLoginModel.DisplayName, FbVerified = externalLoginModel.FbVerified, TwitterVerified = externalLoginModel.TwitterVerified});
        }
示例#57
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 (mobLibraryEntities  db = new mobLibraryEntities())
                {
                    USUARIO user = db.USUARIO.FirstOrDefault(u => u.USERNAME.ToLower() == model.UserName.ToLower());
                    // Check if user already exists
                    if (user == null)
                    {
                        // Insert name into the profile table
                        USUARIO u = new USUARIO();

                        var client = new Facebook.FacebookClient(Session["facebooktoken"].ToString());

                        dynamic response = client.Get("me", new { fields = "first_name,last_name,birthday,username,email,locale" });

                        u.NOMBRE = response["first_name"];
                        u.APELLIDO1 = ( (string)response["last_name"] ).Split(' ').ElementAt(0);
                        u.APELLIDO2 = ( (string)response["last_name"] ).Split(' ').ElementAt(1);

                        //string fecha = (string)response["birthday"];
                        //int mes = Int32.Parse(fecha.Split('-').ElementAt(0));
                        //int dia = Int32.Parse(fecha.Split('-').ElementAt(1));
                        //int anio = Int32.Parse(fecha.Split('-').ElementAt(2));
                        //u.FECHA_NACIMIENTO = new DateTime(anio,mes,dia);

                        //u.DIRECCION = response["location"];
                        u.EMAIL = response["email"];
                        u.USERNAME = response["username"];
                        //Generos favoritos
                        db.USUARIO.Add(u);
                        db.SaveChanges();

                        OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, u.USERNAME);
                        OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);

                        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);
        }