コード例 #1
0
            public static void LoginPublish(Action failCallback, Action sucessCallback)
            {
                                #if FACEBOOK
                if (!FacebookHelper.IsLoggedIn())
                {
                    FB.LogInWithPublishPermissions(new List <string> ()
                    {
                          "publish_actions"
                    },
                                                   (result) => {
                        Debugger.PrintDictionaryAsServerObject(result.ResultDictionary, "FacebookLogin", (int)SharedSystems.Systems.FACEBOOK_HELPER);

                        if (result.Error == null && !result.Cancelled)
                        {
                            sucessCallback();
                        }
                        else
                        {
                            Debugger.Log("Login: FB.LogInWithPublishPermissions " + Debugger.ServerObjectAsString(new Hashtable((IDictionary)result.ResultDictionary)), Debugger.Severity.ERROR, (int)SharedSystems.Systems.FACEBOOK_HELPER);
                            failCallback();
                        }
                    });
                }
                else
                {
                    Debugger.Log("Login: already logged in", (int)SharedSystems.Systems.FACEBOOK_HELPER);
                }
                                #endif
            }
コード例 #2
0
    public void SendNotifications(long lookId, long userId, string appAccessToken, VoteType vote)
    {
        string db = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;

        //bool isVoted = false;
        Look look = Look.GetLookById(lookId, userId, db);

        //send notification to the creator of the outfit unless the creator is a bot (bot is <=0)
        if (look.creator.facebookId > 0 && vote == VoteType.UpVote)
        {
            UserProfile user = UserProfile.GetUserProfileById(userId, db);

            //Post a fb notification that user has loved a vote

            try
            {
                if (UserProfile.IsFriend(look.creator.userId, user.facebookId))
                {
                    //Send the notification only if the user is creator's friend
                    appAccessToken = FacebookHelper.SendNotification(appAccessToken, look.creator.facebookId, user.facebookId, look);
                    this.Session["app_access_token"] = appAccessToken;
                }
            }
            catch (Facebook.FacebookOAuthException ex)
            {
                //Log the oauth exception.
            }
        }

        //send notification to a voter if their friend voted on the same outfit
    }
コード例 #3
0
        async void ContentPanel_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                source = new CancellationTokenSource();
                fbBrowser.Visibility = Visibility.Visible;
                task = ParseFacebookUtils.LogInAsync(fbBrowser, new[] { "basic_info", "email", "user_location", "user_birthday" }, source.Token);
                await task;
                fbBrowser.Visibility = Visibility.Collapsed;

                // check to see if any fields need to be updated:
                FacebookHelper.CheckForUpdates();
                NavigationService.Navigate(new Uri("/Pages/NewsFeed.xaml?FromLogin=true", UriKind.Relative));
            }
            catch (OperationCanceledException)
            {
                task = null;
            }
            catch (Exception)
            {
                // other error:
                MessageBox.Show("There was an error trying to log in. Please try again.");
                return;
            }
        }
コード例 #4
0
        public static Event Parse(dynamic eventObject)
        {
            Event fbEvent = new Event();

            fbEvent.Id          = eventObject.eid;
            fbEvent.Name        = eventObject.name;
            fbEvent.Description = eventObject.description;
            fbEvent.StartTime   = DateTime.Parse((string)eventObject.start_time);

            if (!(eventObject.venue is Facebook.JsonArray))
            {
                fbEvent.Venue = FacebookHelper.DeserealizeVenue(eventObject.venue);
            }

            fbEvent.AttendingCount = (int)eventObject.attending_count;
            fbEvent.EventUrl       = @"https://www.facebook.com/events/" + fbEvent.Id;

            Image img = new Image()
            {
                Type = 1, //. Enum. Small Image
                Url  = @"http://graph.facebook.com/" + fbEvent.Id + @"/picture"
            };

            //Download file

            return(fbEvent);
        }
コード例 #5
0
        public void PostData(ShareathonGroup item)
        {
            FacebookAccount facebookAccount = sharegrprepo.getFbAccount(item.Facebookaccountid);
            string          feedId          = string.Empty;

            string[] pageid = item.Facebookpageid.Split(',');

            foreach (string item_str in pageid)
            {
                string feeds = FacebookHelper.getFacebookRecentPost(item.AccessToken, item_str);

                try
                {
                    if (!string.IsNullOrEmpty(feeds) && !feeds.Equals("[]"))
                    {
                        JObject fbpageNotes = JObject.Parse(feeds);
                        foreach (JObject obj in JArray.Parse(fbpageNotes["data"].ToString()))
                        {
                            try
                            {
                                string feedid = obj["id"].ToString();
                                feedid = feedid.Split('_')[1];
                                feedId = feedid + "," + feedId;
                            }
                            catch { }
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }
            FacebookHelper.postfeedGroup(item.AccessToken, item.Facebookgroupid, feedId, facebookAccount.FbUserId, item.Timeintervalminutes);
        }
コード例 #6
0
        public ActionResult PostarFace(Guid id)
        {
            var servico = ctx.Servico.Find(id);

            var postValues = new Dictionary <string, string>();

            ClaimsIdentity claimIdenties = HttpContext.User.Identity as ClaimsIdentity;

            if (claimIdenties.FindFirst("FacebookAccessToken") == null)
            {
                return(RedirectToAction("IndexServico", "Usuario"));
            }

            // list of available parameters available @ http://developers.facebook.com/docs/reference/api/post
            postValues.Add("access_token", claimIdenties.FindFirst("FacebookAccessToken").Value);
            postValues.Add("message", servico.DS_TITULO);

            string facebookWallMsgId = string.Empty;
            string response;

            MethodResult header = FacebookHelper.SubmitPost(string.Format("https://graph.facebook.com/{0}/feed", claimIdenties.FindFirst("FacebookProviderKey").Value),
                                                            FacebookHelper.BuildPostString(postValues),
                                                            out response);

            if (header.returnCode == MethodResult.ReturnCode.Success)
            {
                var deserialised = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(response);
                facebookWallMsgId = deserialised["id"];
                return(RedirectToAction("IndexServico", "Usuario"));
            }

            throw new Exception(header.returnCode.ToString());
        }
コード例 #7
0
        public void PostDataPage(Shareathon item, string pageid)
        {
            Domain.Socioboard.Domain.FacebookAccount facebookpage    = sharepo.getFacebookAccountDetailsByUserProfileId(pageid, item.Userid);
            Domain.Socioboard.Domain.FacebookAccount facebookAccount = sharepo.getFacebookAccountDetailsByUserProfileId(item.Facebookaccountid, item.Userid);

            if (facebookpage != null)
            {
                string feeds = FacebookHelper.getFacebookRecentPost(facebookAccount.AccessToken, facebookpage.FbUserId);



                string feedId = string.Empty;
                try
                {
                    if (!string.IsNullOrEmpty(feeds) && !feeds.Equals("[]"))
                    {
                        JObject fbpageNotes = JObject.Parse(feeds);
                        foreach (JObject obj in JArray.Parse(fbpageNotes["data"].ToString()))
                        {
                            try
                            {
                                string feedid = obj["id"].ToString();
                                feedid = feedid.Split('_')[1];
                                if (sharepo.IsShareathonExistById(item.Id))
                                {
                                    string ret = FacebookHelper.ShareFeed(facebookAccount.AccessToken, feedid, facebookpage.FbUserId, "", facebookAccount.FbUserId, facebookpage.FbUserName);
                                    if (ret == "success")
                                    {
                                        Thread.Sleep(1000 * 60 * item.Timeintervalminutes);
                                    }
                                    else if (ret == "Error validating access token")
                                    {
                                        facebookAccount.IsActive = 2;
                                        facebookrepo.updateFacebookUserStatus(facebookAccount);
                                    }
                                }
                            }
                            catch { }
                        }
                    }
                    else
                    {
                        if (!feeds.Contains("The remote server returned an error: (400) Bad Request."))
                        {
                            facebookpage.IsActive = 2;
                            facebookrepo.updateFacebookUserStatus(facebookpage);
                        }
                        else
                        {
                            facebookpage.IsActive = 2;
                            facebookrepo.updateFacebookUserStatus(facebookAccount);
                            sharepo.UpadteShareathonByFacebookUserId(facebookAccount.FbUserId, facebookAccount.UserId);
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }
        }
コード例 #8
0
        public void PostDataPage(Shareathon item, string pageid)
        {
            FacebookAccount facebookpage    = sharegrprepo.getFbAccount(Guid.Parse(pageid));
            FacebookAccount facebookAccount = sharegrprepo.getFbAccount(item.Facebookaccountid);

            string feeds = FacebookHelper.getFacebookRecentPost(facebookpage.AccessToken, facebookpage.FbUserId);


            string feedId = string.Empty;

            try
            {
                if (!string.IsNullOrEmpty(feeds) && !feeds.Equals("[]"))
                {
                    JObject fbpageNotes = JObject.Parse(feeds);
                    foreach (JObject obj in JArray.Parse(fbpageNotes["data"].ToString()))
                    {
                        try
                        {
                            string feedid = obj["id"].ToString();
                            feedid = feedid.Split('_')[1];
                            FacebookHelper.ShareFeed(facebookAccount.AccessToken, feedid, facebookpage.FbUserId, "", facebookAccount.FbUserId, "", item.Timeintervalminutes);
                        }
                        catch { }
                        Thread.Sleep(1000 * 60 * item.Timeintervalminutes);
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
コード例 #9
0
        public IHttpActionResult EditShareathon(ShareathonGroupViewModel sharethon)
        {
            string          groupId         = "";
            string          nameId          = "";
            ShareathonGroup eidtShareathon  = sharegrprepo.getShareathon(sharethon.Id);
            FacebookAccount facebookAccount = sharepo.getFbAccount(sharethon.Facebookaccountid);
            string          pageid          = FacebookHelper.GetFbPageDetails(sharethon.FacebookPageUrl, facebookAccount.AccessToken);

            eidtShareathon.Facebookaccountid   = facebookAccount.Id;
            eidtShareathon.Facebookpageid      = pageid;
            eidtShareathon.FacebookPageUrl     = sharethon.FacebookPageUrl;
            eidtShareathon.Timeintervalminutes = sharethon.Timeintervalminutes;
            for (int i = 0; i < sharethon.FacebookGroupId.Length; i++)
            {
                string   dataid = sharethon.FacebookGroupId[i];
                string[] grpid  = Regex.Split(dataid, "###");
                groupId = grpid[0] + "," + groupId;
                nameId  = sharethon.FacebookGroupId[i] + "," + nameId;
            }
            eidtShareathon.Facebookgroupid = groupId.TrimEnd(',');
            eidtShareathon.Facebooknameid  = nameId.TrimEnd(',');
            if (sharegrprepo.updateShareathon(eidtShareathon))
            {
                return(Ok());
            }
            else
            {
                return(BadRequest());
            }
        }
コード例 #10
0
ファイル: GameInfoViewModel.cs プロジェクト: RemSoftDev/GMP
        public async Task <ChallengeCreateResponseModel> SendChallenges(IList <object> selectedItems)
        {
            List <string> contacts = new List <string>();

            foreach (var item in selectedItems)
            {
                var contact = item as ContactData;
                if (contact != null)
                {
                    if (contact.ContactStr != "Challenge on Facebook")
                    {
                        contacts.Add(contact.ContactStr.Replace("+", ""));
                    }
                    else
                    {
                        FacebookHelper fbh = new FacebookHelper();
                        await fbh.CreateFbPost();
                    }
                }
            }
            if (contacts.Count == 0)
            {
                return(new ChallengeCreateResponseModel {
                    Status = CreateChallengeStatus.Ok
                });
            }
            return(await Game.CreateChallenge(puzzle.GameId, contacts));
        }
コード例 #11
0
 private ActionResult ProcessResponseErrorRedirect(string redirecturi, WebException exception)
 {
     if (exception != null && exception.Response != null)
     {
         var responsestream = exception.Response.GetResponseStream();
         if (responsestream != null && exception.Response.ContentLength > 0)
         {
             var responsebody  = new StreamReader(responsestream).ReadToEnd();
             var errorresponse = System.Web.Helpers.Json.Decode <FacebookErrorResponse>(responsebody);
             if (errorresponse.error.type == "OAuthException")
             {
                 return(Redirect(FacebookHelper.GetSignUpUrl(AppConfigHelper.FacebookAppId, new List <string> {
                     "email"
                 },
                                                             redirecturi, TempData).AbsoluteUri));
             }
         }
     }
     TempData[TempDataStringResuorce.ActionResultNotification] = new ActionResultNotification
     {
         Message = "Some network related error occured, Please try again",
         Result  = false,
         State   = ActionResultNotification.MessageState.Warning
     };
     return(RedirectToAction("LogIn", "Account"));
 }
コード例 #12
0
ファイル: createlook.aspx.cs プロジェクト: Fashionkred/main
    public void SendNotifications(Look look, string appAccessToken)
    {
        string db = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;

        //send notification to the creator of the outfit unless the creator is a bot (bot is <=0)
        if (look.creator.facebookId > 0)
        {
            //Get look's creator's follower's facebook ids
            List <long> followerIds = UserProfile.GetUserFollowersFacebookIds(look.creator.userId, db);

            //Post a fb notification to user's followers that user has posted a look
            foreach (long followerId in followerIds)
            {
                try
                {
                    appAccessToken = FacebookHelper.SendCreateNotification(appAccessToken, look.creator.facebookId, followerId, look);
                    this.Session["app_access_token"] = appAccessToken;
                }
                catch (Facebook.FacebookOAuthException ex)
                {
                    //Log the oauth exception.
                }
            }
        }

        //send notification to a voter if their friend voted on the same outfit
    }
コード例 #13
0
        private void SendRatingFacebook(int score)
        {
            var facebookId = App.MobileService.CurrentUser.UserId.Split(':')[1];

            FacebookHelper.RetrieveUserInformation(facebookId, async fu =>
            {
                Rating rating = new Rating()
                {
                    SessionId = Session.Id,
                    Score     = (float)score,
                    RaterName = fu.FullName,
                    ImageUrl  = fu.PictureUrl
                };

                await App.MobileService.GetTable <Rating>().InsertAsync(rating);
            }, async() =>
            {
                Rating rating = new Rating()
                {
                    SessionId = Session.Id,
                    Score     = (float)score,
                    RaterName = "Someone",
                    ImageUrl  = "Assets/NoProfile.png"
                };

                await App.MobileService.GetTable <Rating>().InsertAsync(rating);
            });
        }
コード例 #14
0
        private static List <CbcBeer> LoadFromFacebook()
        {
            var posts = FacebookHelper.FetchEventPosts(162211374161547).ConfigureAwait(false).GetAwaiter().GetResult();
            var beers = new List <CbcBeer>();

            foreach (var post in posts)
            {
                if (post.Text != null && post.Text.Contains("RED") && post.Text.Contains("GREEN") && post.Text.Contains("BLUE") && post.Text.Contains("YELLOW"))
                {
                    var reader = new CbcFacebookReader(post.Text);

                    while (true)
                    {
                        var beer = reader.ReadBeer();

                        if (beer == null)
                        {
                            break;
                        }

                        beers.Add(beer);
                    }
                }
            }

            return(beers);
        }
コード例 #15
0
        public void GenerateTypingActivityShouldReturnActivityWithTypingOn()
        {
            var activity = FacebookHelper.GenerateTypingActivity(string.Empty);

            Assert.Equal("typing_on", activity.GetChannelData <FacebookMessage>().SenderAction);
            Assert.Null(activity.GetChannelData <FacebookMessage>().Message);
        }
コード例 #16
0
 public async Task WriteAsyncShouldFailWithNullResponse()
 {
     await Assert.ThrowsAsync <ArgumentNullException>(async() =>
     {
         await FacebookHelper.WriteAsync(null, HttpStatusCode.OK, "testText", Encoding.UTF8, new CancellationToken()).ConfigureAwait(false);
     });
 }
コード例 #17
0
        public void ProcessSingleMessageShouldReturnAnActivityWithMessageWithData()
        {
            var facebookMessageJson = File.ReadAllText(Directory.GetCurrentDirectory() + @"/Files/FacebookMessages.json");
            var facebookMessage     = JsonConvert.DeserializeObject <List <FacebookMessage> >(facebookMessageJson)[0];
            var activity            = FacebookHelper.ProcessSingleMessage(facebookMessage);

            Assert.Equal(activity.Conversation.Id, facebookMessage.Recipient.Id);
        }
コード例 #18
0
        // ===========================================================================
        // = Public Methods
        // ===========================================================================

        public static void Initialize()
        {
            // Initialize Facebook credentials.
            FacebookHelper.Initialize(
                ConfigurationManager.AppSettings["FACEBOOK_ACCESS_TOKEN"],
                ConfigurationManager.AppSettings["FACEBOOK_APP_ID"],
                ConfigurationManager.AppSettings["FACEBOOK_APP_SECRET"]);
        }
コード例 #19
0
        public async Task WriteAsyncShouldFailWithNullEncoding()
        {
            var httpResponse = new Mock <HttpResponse>();

            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await FacebookHelper.WriteAsync(httpResponse.Object, HttpStatusCode.OK, "testText", null, new CancellationToken()).ConfigureAwait(false);
            });
        }
コード例 #20
0
        public void ProcessSingleMessageShouldReturnActivityWithPostBack()
        {
            var facebookMessageJson = File.ReadAllText(Directory.GetCurrentDirectory() + @"/Files/FacebookMessages.json");
            var facebookMessage     = JsonConvert.DeserializeObject <List <FacebookMessage> >(facebookMessageJson)[4];
            var activity            = FacebookHelper.ProcessSingleMessage(facebookMessage);

            Assert.NotNull(activity.Text);
            Assert.Equal(facebookMessage.PostBack.Payload, activity.Text);
        }
コード例 #21
0
        private async void Authenticate()
        {
            bool res = await FacebookHelper.Authenticate();

            if (!res)
            {
                ResultTextBlock.Text = "Something went wrong!";
            }
        }
コード例 #22
0
        public void ProcessSingleMessageShouldReturnActivityWithAttachments()
        {
            var facebookMessageJson = File.ReadAllText(Directory.GetCurrentDirectory() + @"/Files/FacebookMessages.json");
            var facebookMessage     = JsonConvert.DeserializeObject <List <FacebookMessage> >(facebookMessageJson)[3];
            var activity            = FacebookHelper.ProcessSingleMessage(facebookMessage);

            Assert.NotNull(activity.Attachments);
            Assert.Equal(AttachmentCountTest, activity.Attachments.Count);
        }
コード例 #23
0
        public ActionResult GetFBGroup()
        {
            var fbHelper = new FacebookHelper();
            var data     = fbHelper.FeedB2BThaiGroup();

            return(Json(new {
                FeedGroup = data
            }, JsonRequestBehavior.AllowGet));
        }
コード例 #24
0
        private async void OnLoginFacebook(object sender, PointerRoutedEventArgs e)
        {
            try
            {
                await LoginFacebook();
            }
            catch (Exception)
            {
                return;
            }

            var success     = false;
            var shouldSleep = false;

            for (var iterator = 0; iterator < 3 && !success; iterator++)
            {
                try
                {
                    var facebookId      = this.GetPrivateClient().CurrentUser.UserId.Split(':')[1];
                    var userInformation = await FacebookHelper.RetrieveUserInformation(facebookId);

                    User.Current.UserId = userInformation.FullName;
                    success             = true;
                }
                catch (Exception)
                {
                    if (iterator == 2)
                    {
                        User.Current.UserId = GetPrivateClient().CurrentUser.UserId;
                    }
                    else
                    {
                        shouldSleep = true;
                    }
                }

                if (shouldSleep)
                {
                    shouldSleep = false;
                    await Task.Delay(TimeSpan.FromMilliseconds(400 * Math.Pow(2, iterator)));
                }
            }

            var login = LoggedIn;

            if (login != null)
            {
                login.Invoke(this, null);
            }

            UpdateVisibility();

            loginPopup.IsOpen = false;
        }
コード例 #25
0
        public void ActivityToFacebookShouldReturnMessageWithAttachment()
        {
            var activityJson = File.ReadAllText(Directory.GetCurrentDirectory() + @"/Files/Activities.json");
            var activity     = JsonConvert.DeserializeObject <Activity>(activityJson);

            var messageOption = FacebookHelper.ActivityToFacebook(activity);

            Assert.Equal(activity.Conversation.Id, messageOption.Recipient.Id);
            Assert.Equal(activity.Text, messageOption.Message.Text);
            Assert.Equal(activity.Attachments[0].ContentType, messageOption.Message.Attachment.Type);
        }
コード例 #26
0
        public async Task SetFacebookFriendsAsync(string accessToken)
        {
            var facebookHelper = new FacebookHelper();

            FacebookProfile = await facebookHelper.GetFacebookProfileAsync(accessToken);

            if (FacebookProfile != null)
            {
                string userID = FacebookProfile.Id;
                FacebookFriends = await facebookHelper.GetFacebookProfileFriendAsync(accessToken, userID);
            }
        }
コード例 #27
0
        public override bool ProcessCreate(Item item)
        {
            if (base.ProcessCreate(item))
            {
                return(true);
            }

            var fbret = FacebookHelper.AddContactInfo(storage, item);
            var pcret = PossibleContactHelper.AddContact(storage, item);

            return(fbret && pcret);
        }
コード例 #28
0
ファイル: GameInfoViewModel.cs プロジェクト: RemSoftDev/GMP
 public async Task GoToShareOrChallenge()
 {
     if (createdByCurrentUser)
     {
         FacebookHelper fb = new FacebookHelper();
         await fb.ShareOnFb();
     }
     else
     {
         await GoToChallenge();
     }
 }
コード例 #29
0
        public void GetEmbedVideoLinkTest()
        {
            // arrange
            var startingLink = "https://www.facebook.com/NBCNews/videos/213248396772223/";
            var expected     = "https://www.facebook.com/video/embed?video_id=213248396772223";

            // act
            var actual = new FacebookHelper().GetEmbedVideoLink(startingLink);

            // assert
            StringAssert.AreEqualIgnoringCase(expected, actual);
        }
コード例 #30
0
        public ActionResult TestFB()
        {
            var fb    = new FacebookHelper();
            var model = new FacebookModel();

            model.Link    = "http://www.ouikum.com/MyB2B/quotation/bidproduct/QO-ACB-130521-2";
            model.Picture = "https://ouikumstorage.blob.core.windows.net/upload/Product/3523/151289/CHANG-509.jpg";
            model.Message = "มีลูกค้าต้องการ $ชื่อสินค้า$ $จำนวน$ สำหรับ Suppliers ท่านไหนสนใจ สามารถเสนอราคา ติดต่อที่";
            var isResult = fb.PostFeed(model);

            return(View());
        }