Пример #1
0
        public long PostPhoto(string pageId, FacebookPostViewModel model)
        {
            dynamic parameters = new ExpandoObject();

            parameters.link    = model.Link ?? string.Empty;
            parameters.place   = model.LocationId ?? string.Empty;
            parameters.caption = model.Content;

            try
            {
                foreach (var item in model.Picture.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList())
                {
                    byte[] photo       = File.ReadAllBytes(item);
                    var    mediaObject = new FacebookMediaObject
                    {
                        FileName    = Path.GetFileNameWithoutExtension(item),
                        ContentType = "image/jpeg"
                    };
                    mediaObject.SetValue(photo);
                    parameters.source = mediaObject;
                }
                InitializeFacebookClient(model.AccessToken);
                var result     = _fbClient.Post(String.Format("/{0}/photos", pageId), parameters);
                var jsonResult = (JObject)JsonConvert.DeserializeObject(result.ToString());
                return(Convert.ToInt64(jsonResult.First.First.ToString()));
            }
            catch (FacebookOAuthException)
            {
            }
            catch (Exception)
            {
            }

            return(0);
        }
Пример #2
0
        public async Task <ActionResult> FB_PostPages()
        {
            var access_token    = HttpContext.Items["access_token"].ToString();
            var appsecret_proof = access_token.GenerateAppSecretProof();

            var facebookClient = new FacebookClient();

            var posts = await facebookClient.GetAsync <dynamic>(
                access_token, "me", "fields=posts{description,caption,message,story,link,name,created_time,picture}");

            var postList = new List <FacebookPostViewModel>();

            foreach (dynamic post in posts.posts.data)
            {
                var facebookPost = new FacebookPostViewModel
                {
                    Id          = post.id,
                    Name        = post.name,
                    CreatedTime = post.created_time,
                    Message     = post.message,
                    Description = post.description,
                    Story       = post.story,
                    Caption     = post.caption,
                    Link        = post.link,
                    PictureURL  = post.picture,
                };
                postList.Add(facebookPost);
            }

            return(PartialView(postList));
        }
Пример #3
0
        public async Task <ActionResult> FB_GetFeed()
        {
            var access_token = Convert.ToString(HttpContext.Items["access_token"]);

            if (access_token != null)
            {
                try
                {
                    var appsecret_proof = access_token.generateAppSecretProof();

                    FacebookProfileViewModel fbm = new FacebookProfileViewModel();
                    var imgurl = fbm.ImageURL;
                    FacebookPostViewModel fbpm = new FacebookPostViewModel();
                    var     fb     = new FacebookClient(access_token);
                    dynamic myFeed = await fb.GetTaskAsync(
                        ("me/feed?fields=id,from {{id,name,picture{{url}}}},story,picture,link,name,description,message,type,created_time,likes,comments").GraphAPICall(appsecret_proof));

                    var postList = new List <FacebookPostViewModel>();
                    foreach (dynamic post in myFeed.data)
                    {
                        postList.Add(DynamicExtention.ToStatic <FacebookPostViewModel>(post));
                    }
                    fbpm.From_Picture_Url = imgurl;

                    return(PartialView(postList));
                }
                catch (Exception) { throw; }
            }
            else
            {
                throw new HttpException(404, "missing access token");
            }
        }
Пример #4
0
        public long Post(string pageId, FacebookPostViewModel model)
        {
            dynamic parameters = new ExpandoObject();

            parameters.message = model.Content;
            parameters.link    = model.Link ?? string.Empty;
            parameters.place   = model.LocationId ?? string.Empty;

            try
            {
                InitializeFacebookClient(model.AccessToken);
                var result     = _fbClient.Post(String.Format("/{0}/feed", pageId), parameters);
                var jsonResult = (JObject)JsonConvert.DeserializeObject(result.ToString());
                return(Convert.ToInt64(jsonResult.First.First.ToString().Split('_')[1]));
            }
            catch (FacebookOAuthException)
            {
            }
            catch (Exception)
            {
            }

            return(0);
        }
Пример #5
0
        public long PostVideo(string pageId, FacebookPostViewModel model)
        {
            dynamic parameters = new ExpandoObject();

            parameters.link       = model.Link ?? string.Empty;
            parameters.place      = model.LocationId ?? string.Empty;
            parameters.title      = model.Content;
            parameters.desription = model.Content;

            try
            {
                byte[] video = File.ReadAllBytes(model.Picture);
                //Stream video = File.OpenRead(model.Picture);
                var extension   = Path.GetExtension(model.Picture).Replace(".", "").Replace(",", "");
                var mediaObject = new FacebookMediaObject /*FacebookMediaStream*/
                {
                    FileName    = Path.GetFileName(model.Picture) /*Path.GetFileNameWithoutExtension(model.Picture)*/,
                    ContentType = "video/" + extension.ToLower()
                };
                mediaObject.SetValue(video);
                parameters.source = mediaObject;

                InitializeFacebookClient(model.AccessToken);
                var result     = _fbClient.Post(String.Format("/{0}/videos", pageId), parameters);
                var jsonResult = (JObject)JsonConvert.DeserializeObject(result.ToString());
                return(Convert.ToInt64(jsonResult.First.First.ToString()));
            }
            catch (FacebookOAuthException)
            {
            }
            catch (Exception)
            {
            }

            return(0);
        }
Пример #6
0
        // GET: Comments
        public ActionResult Index(string id)
        {
            try
            {
                Debugger.Launch();
                if (!string.IsNullOrEmpty(id))
                {
                    if (User.Identity.IsAuthenticated)
                    {
                        var facebookComments = new FacebookPost();

                        var userId =
                            Convert.ToInt64(((FormsIdentity)((GenericPrincipal)User).Identity).Ticket.UserData);


                        var postid = id; //"146505212039213_2464275336928844";

                        var userAccessTokenModel =
                            WebUow.Instance.RepoOf <FacebookAccessToken>().Get(q => q.userid == userId).SingleOrDefault();

                        //var acccessoken =
                        //    "EAACEdEose0cBAG7Mrj2NC0goUJk0x4dzcaxQHPZBzu8QLZACQAWyMABwy7wlAFg6c60NrX5wbFAkrVUAaxSruaD8L9nKTTLnVbk930SoQZCNadIyEd9JkDubJHLO5GvagSWkhfVtZAzPI72iJEt6w7SMxFXhVyQCDw4owBywCQZDZD";

                        var obj = facebookComments.GetFacebookPostReactions(postid, userAccessTokenModel.accesstoken);
                        FacebookReactions facebookreactions;

                        if (obj is FacebookReactions)
                        {
                            facebookreactions = (FacebookReactions)obj;
                        }
                        else
                        {
                            var facebookerror = (FacebookError)obj;

                            // Login status or access token has expired, been revoked, or is otherwise invalid. Handle expired access tokens.
                            // Access token has expired
                            // Error validating access token: The session is invalid because the user logged out.
                            if (facebookerror.error.code == "190" &&
                                facebookerror.error.error_subcode == "463")
                            {
                                ViewBag.Error = facebookerror.error.message;
                                FormsAuthentication.SignOut();
                                return(RedirectToAction("Index", "Login"));
                            }
                            // This post cannot be fetched it is private
                            else if (facebookerror.error.code == "100")
                            {
                                ViewBag.Error = "Due to facebook restriction we cannot Fetch comments of group, user and private facebook posts. Kindly make sure the post is public and not from the user or group.";
                            }
                            // (#803) Some of the aliases you requested do not exist: 1024337415_
                            // something is wrong with the request
                            else if (facebookerror.error.code == "803")
                            {
                                ViewBag.Error = facebookerror.error.message;
                            }

                            return(View("Error"));
                        }

                        var facebookcomment = facebookComments.GetAllCommentsAndReplies(postid,
                                                                                        userAccessTokenModel.accesstoken);


                        var model = new FacebookPostViewModel
                        {
                            General = new General
                            {
                                Angry = facebookreactions.angry.summary.total_count,
                                Haha  = facebookreactions.haha.summary.total_count,
                                Like  = facebookreactions.like.summary.total_count,
                                Love  = facebookreactions.love.summary.total_count,
                                Sad   = facebookreactions.sad.summary.total_count,
                                //MostActiveUsers = facebookreactions.angry.summary.total_count,
                                Shares   = facebookreactions.shares == null ? 0 : facebookreactions.shares.count,
                                Wow      = facebookreactions.wow.summary.total_count,
                                Comments = facebookreactions.comments.summary.total_count
                            }
                        };


                        if (facebookcomment != null && facebookcomment.Count > 0)
                        {
                            model.General.PeopleInConversation = TotalUniuePeopleinConversation(facebookcomment);
                            model.General.Replies       = CountFacebookReplies(facebookcomment);
                            model.General.RepliesLikes  = CountRepliesLikes(facebookcomment);
                            model.General.CommentsLikes = CountCommentLikes(facebookcomment);

                            var maxCommentDate = facebookcomment.OrderByDescending(q => q.created_time).FirstOrDefault();
                            model.ToDate = maxCommentDate != null ? maxCommentDate.created_time : DateTime.Now;

                            model.Wordcloud      = CountWordCloud(facebookcomment);
                            model.WordCloudCount = 0;
                            foreach (var item in model.Wordcloud)
                            {
                                model.WordCloudCount += item.Value;
                            }

                            model.Chartmonth           = GetDates(facebookcomment);
                            model.AttachmentViewModels = GetImages(facebookcomment);
                            CountFacebookReplies(facebookcomment);
                        }

                        model.CreatedTime = DateTime.Parse(facebookreactions.created_time).ToString("MMMM dd, yyyy");
                        model.FromDate    = DateTime.Parse(facebookreactions.created_time);
                        model.Postid      = postid;

                        Session["facebookcomment"] = facebookcomment;

                        return(View(model));
                    }
                    return(RedirectToAction("Index", "Login"));
                }
                ViewBag.Error = "Wrong Facebook PostId";
                return(View("Error"));
            }
            catch (Exception ex)
            {
                ViewBag.Error = ex.Message;
                return(View("Error"));
            }
        }