コード例 #1
0
        public async Task <ActionResult> Index(FacebookContext context, string UserId = null)
        {
            Session["context"] = context;

            if (ModelState.IsValid)
            {
                if (UserId == null)
                {
                    UserId = context.UserId;
                }
                var pm = new pmPersonalInfo();

                pm.basicInfo     = serviceUsers.GetUserInfo(context, UserId);
                pm.personalPosts = await servicePosts.GetUserPosts(context, UserId, 0);

                pm.votetPosts = await servicePosts.GetUserPodyakaPosts(context, 0);

                if (context.UserId == UserId)
                {
                    return(View(pm));
                }
                else
                {
                    return(View("OtherUser", pm));
                }
            }

            return(View("Error"));
        }
コード例 #2
0
        public async Task <ActionResult> Index(FacebookContext context)
        {
            if (ModelState.IsValid)
            {
                var user = await context.Client.GetCurrentUserAsync <MyAppUser>();

                var friendsWithUpcomingBirthdays = user.Friends.Data.OrderBy(friend =>
                {
                    try
                    {
                        string friendBirthDayString = friend.Birthday;
                        if (String.IsNullOrEmpty(friendBirthDayString))
                        {
                            return(int.MaxValue);
                        }

                        var birthDate   = DateTime.Parse(friendBirthDayString);
                        friend.Birthday = birthDate.ToString("MMMM d"); // normalize birthday formats
                        return(BirthdayCalculator.GetDaysBeforeBirthday(birthDate));
                    }
                    catch
                    {
                        return(int.MaxValue);
                    }
                }).Take(100);
                user.Friends.Data = friendsWithUpcomingBirthdays.ToList();
                return(View(user));
            }

            return(View("Error"));
        }
コード例 #3
0
        public void BindModel_ReturnsExpectedFacebookContext_WhenSignedRequestComesFromQuery()
        {
            FacebookConfiguration config = new FacebookConfiguration();

            config.AppSecret      = "3e29b24f825e737d97aed5eb62df5076";
            config.ClientProvider = new DefaultFacebookClientProvider(config);
            FacebookContextModelBinder contextBinder     = new FacebookContextModelBinder(config);
            ControllerContext          controllerContext = MockHelpers.CreateControllerContext(
                null,
                new NameValueCollection
            {
                {
                    "signed_request",
                    "x1yDEgacN3N5iu23Ji8NLYp9LGO1-cUXKHTJQrMqzVQ.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEzNTM5MTMyMDAsImlzc3VlZF9hdCI6MTM1MzkwNzQ5Miwib2F1dGhfdG9rZW4iOiJBQUFGUlJPcWtwZ01CQURBSjNQZk5vNldXMlJ5WkFSQ1hjU0daQlhpNTBLTG9wRzFwYmFwc2M2aThKY3h6WkFQN1pDSnlpcXVHYlc3WXlCam1aQjh0UWpyelZ2VTNrYm44b3N3WXR5czkzTWdaRFpEIiwidXNlciI6eyJjb3VudHJ5IjoidXMiLCJsb2NhbGUiOiJlbl9VUyIsImFnZSI6eyJtaW4iOjIxfX0sInVzZXJfaWQiOiIxNzgyNTkwMSJ9"
                }
            }
                );

            FacebookContext context = Assert.IsType <FacebookContext>(
                contextBinder.BindModel(controllerContext, new ModelBindingContext())
                );

            Assert.NotNull((object)context.SignedRequest);
            Assert.NotNull(context.AccessToken);
            Assert.Equal("17825901", context.UserId);
        }
コード例 #4
0
 private void GetBands()
 {
     try
     {
         FacebookContext context = new FacebookContext();
         context.Load <Band>(context.GetBandsQuery(AccessToken),
                             (loadOp) =>
         {
             if (!loadOp.HasError)
             {
                 Bands.Clear();
                 foreach (Band band in loadOp.Entities)
                 {
                     Bands.Add(band);
                 }
             }
             else
             {
                 MessageBox.Show(loadOp.Error.ToString());
             }
         },
                             null);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
コード例 #5
0
        private void SetAccessToken(Action callback)
        {
            FacebookContext context = new FacebookContext();

            context.GetAccessToken(App.Current.FacebookSettings.AccessTokenUrl,
                                   App.Current.FacebookSettings.ApplicationID,
                                   App.Current.FacebookSettings.RedirectUrl,
                                   App.Current.FacebookSettings.ApplicationSecret,
                                   AuthorizationCode,
                                   (invokeOp) =>
            {
                if (!invokeOp.HasError)
                {
                    AccessToken = invokeOp.Value;
                    if (callback != null)
                    {
                        callback();
                    }
                }
                else
                {
                    MessageBox.Show(invokeOp.Error.ToString());
                }
            },
                                   null);
        }
コード例 #6
0
ファイル: AuthTest.cs プロジェクト: molekm/automa.io.net
 public static void ClassCleanup()
 {
     if (_ctx != null)
     {
         _ctx.Dispose();
     }
     _ctx = null;
 }
コード例 #7
0
ファイル: sample7.cs プロジェクト: causapolis1/docs
   public async Task<ActionResult> Index(FacebookContext context)
   {
      if (ModelState.IsValid)
      {
         var user = await context.Client.GetCurrentUserAsync<MyAppUser>();
         return View(user);
      }

      return View("Error");
   }
コード例 #8
0
        public ActionResult SettingsLogin(string trackingID, FacebookContext context)
        {
            var user = this.CurrentUser();

            if (user != null)
            {
                return(RedirectToAction("AppSettings", "Facebook", new { area = "Widget", trackingId = trackingID }));
            }
            return(View());
        }
コード例 #9
0
        public async Task <ActionResult> Search(string friendName, FacebookContext context)
        {
            var userFriends = await context.Client.GetCurrentUserFriendsAsync <MyAppUserFriendSimple>();

            var friendsFound = String.IsNullOrEmpty(friendName) ?
                               userFriends.ToList() :
                               userFriends.Where(f => f.Name.ToLowerInvariant().Contains(friendName.ToLowerInvariant())).ToList();

            friendsFound.ForEach(f => f.Birthday = !String.IsNullOrEmpty(f.Birthday) ? DateTime.Parse(f.Birthday).ToString("MMMM d") : "");
            return(View(friendsFound));
        }
コード例 #10
0
        public ActionResult SetUserToVoteList(FacebookContext context, bool IsSet)
        {
            if (context == null)
            {
                context = (FacebookContext)Session["context"];
            }

            var pm = serviceVoting.ChangePersonVotingStatus(context.UserId, IsSet);

            return(Json(pm, JsonRequestBehavior.AllowGet));
        }
コード例 #11
0
        public ActionResult GetNext(FacebookContext context, int from)
        {
            if (context == null)
            {
                context = (FacebookContext)Session["context"];
            }

            var pm = serviceUsers.GetUsersForRating(context, from);

            return(Json(pm, JsonRequestBehavior.AllowGet));
        }
コード例 #12
0
        public async Task <ActionResult> GetNext(FacebookContext context, int from)
        {
            if (context == null)
            {
                context = (FacebookContext)Session["context"];
            }

            var pm = await servicePosts.GetUserRealPosts(context, from);

            return(Json(pm, JsonRequestBehavior.AllowGet));
        }
コード例 #13
0
        public ActionResult Promote(FacebookContext context, string PostId)
        {
            if (context == null)
            {
                context = (FacebookContext)Session["context"];
            }

            servicePromote.Promote(context.UserId, PostId);

            return(Json(1, JsonRequestBehavior.AllowGet));
        }
コード例 #14
0
        public ActionResult Index(FacebookContext context)
        {
            Session["context"] = context;

            if (ModelState.IsValid && Authorite("Administrator"))
            {
                return(View());
            }

            return(View("Error"));
        }
コード例 #15
0
        public ActionResult Index(FacebookContext context)
        {
            Session["context"] = context;

            if (ModelState.IsValid)
            {
                var pm = serviceUsers.GetUsersForRating(context, 0);
                return(View(pm));
            }

            return(View("Error"));
        }
コード例 #16
0
        public async Task <ActionResult> PromoteLink(FacebookContext context, string Link)
        {
            if (context == null)
            {
                context = (FacebookContext)Session["context"];
            }

            var res = await servicePromote.PromoteLink(context, Link);

            System.Threading.Thread.Sleep(200);
            return(Json(res, JsonRequestBehavior.AllowGet));
        }
コード例 #17
0
        public async Task <ActionResult> Index(FacebookContext context)
        {
            if (ModelState.IsValid)
            {
                var user = await context.Client.GetCurrentUserAsync <MyAppUser>();

                MyAppUserExt _MyAppUserExt = new MyAppUserExt();

                _MyAppUserExt.Id    = user.Id;
                _MyAppUserExt.Name  = user.Name;
                _MyAppUserExt.Email = user.Email;

                _MyAppUserExt.Friends        = user.Friends;
                _MyAppUserExt.Photos         = user.Photos;
                _MyAppUserExt.ProfilePicture = user.ProfilePicture;

                _MyAppUserExt.Professions = new List <MyFriendsProfessions> {
                    new MyFriendsProfessions {
                        Professions = "Engineer", TotalFriends = 50, Percentage = 25.00
                    },
                    new MyFriendsProfessions {
                        Professions = "Doctor", TotalFriends = 50, Percentage = 20.00
                    },
                    new MyFriendsProfessions {
                        Professions = "Teacher", TotalFriends = 50, Percentage = 30.00
                    },
                    new MyFriendsProfessions {
                        Professions = "Jurnalist", TotalFriends = 50, Percentage = 15.00
                    },
                    new MyFriendsProfessions {
                        Professions = "Writer", TotalFriends = 50, Percentage = 5.00
                    }
                };

                //var user1 = context.Client.Get(user.Friends.Data[10].Link);

                _MyAppUserExt.ChartData = "[";
                for (int i = 0; i < _MyAppUserExt.Professions.Count; i++)
                {
                    if (i > 0)
                    {
                        _MyAppUserExt.ChartData += ",";
                    }
                    _MyAppUserExt.ChartData += "['" + _MyAppUserExt.Professions[i].Professions + "'," + _MyAppUserExt.Professions[i].Percentage + "]";
                }
                _MyAppUserExt.ChartData += "]";

                return(View(_MyAppUserExt));
            }

            return(View("Error"));
        }
コード例 #18
0
        public async Task <ActionResult> Index(FacebookContext context)
        {
            Session["context"] = context;

            if (ModelState.IsValid)
            {
                var pm = await servicePosts.GetUserRealPosts(context, 0);

                return(View(pm));
            }

            return(View("Error"));
        }
コード例 #19
0
        public ActionResult Vote(FacebookContext context, int votingVariantId, bool IsVote)
        {
            if (context == null)
            {
                context = (FacebookContext)Session["context"];
            }

            int votingId = serviceVoting.Vote(context.UserId, votingVariantId, IsVote);

            var newResults = serviceVoting.GetUserVotes(votingId, context.UserId);

            return(Json(newResults, JsonRequestBehavior.AllowGet));
        }
コード例 #20
0
        public async Task <ActionResult> Index(FacebookContext context)
        {
            if (ModelState.IsValid)
            {
                var Posts = (await context.Client.GetTaskAsync <FQLPosts>("fql", new { q = "SELECT post_id,permalink,source_id,message,description,created_time,type,attachment FROM stream WHERE source_id = \"" + 100001898002905 + "\" limit " + 20 })).Data;
                //await serviceUsers.UpdateAllUsersInfo(context);
                var user = await context.Client.GetCurrentUserAsync <UserForMainPage>();

                serviceUsers.AddUser(user);
                return(View(user));
            }

            return(View("Error"));
        }
コード例 #21
0
        public async Task <bool> UpdateAllUsersInfo(FacebookContext context)
        {
            foreach (var user in db.Users.ToArray())
            {
                var fbUser = await context.Client.GetFacebookObjectAsync <UserForMainPage>(user.UserId);

                if (fbUser.Id != null)
                {
                    AddUser(fbUser);
                }
            }


            return(true);
        }
コード例 #22
0
        public async Task <ActionResult> Index(FacebookContext context)
        {
            Session["context"] = context;

            if (ModelState.IsValid)
            {
                var pm = new pmIndex();
                pm.promotePosts = await servicePosts.GetRandomPromotePosts(context, 0);

                pm.friendsFeed = await servicePosts.GetFriendsPosts(context, 0, Session);

                return(View(pm));
            }

            return(View("Error"));
        }
コード例 #23
0
        public async Task <ActionResult> SetBals(FacebookContext context, string UserId)
        {
            if (!Authorite("Administrator"))
            {
                return(View("Error"));
            }

            if (context == null)
            {
                context = (FacebookContext)Session["context"];
            }

            bool result = await serviceUsers.AdministrationAvtoritetAdd(context, UserId, "");

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
コード例 #24
0
        public async Task <ActionResult> Podyaka(FacebookContext context, string PostId, bool IsLike)
        {
            if (context == null)
            {
                context = (FacebookContext)Session["context"];
            }
            string FromUserId = context.UserId;

            var post = await context.Client.GetFacebookObjectAsync <FacebookPost>(PostId);

            string ToUserId = post.From.Id;

            servicePosts.Podyaka(FromUserId, PostId, ToUserId, IsLike);

            return(Json(1, JsonRequestBehavior.AllowGet));
        }
コード例 #25
0
        public ActionResult Index(FacebookContext context, bool?debug = false)
        {
            //var fs = new FacebookServices();

            //fs.GetCurrentUser("CAAEWkqzCCHYBACFe04a09eZAUvDjBmk1CDIe4aZBTJB8tVWea8EmZCN24ETgEnrqAWoTYLpezdL0FrYJbyE0tODcrqcj57gpMqJQdCxyOZAARCcVKocVPI5lBFDtzEf0qOxBQ2sCgzSQg3VX6YBlg8BtxUuxZBZCjW03ObrHKm2NwNNKVTN6atkhH9JnTNJdIcONBFuYUmp1LQYwMPr0dD");

            FacebookLayoutToken  facebookPageToken = null;
            FbSignedRequestToken signedRequest;

            if (debug == null || !(bool)debug)
            {
                if (!ModelState.IsValid)
                {
                    return(View("Error"));
                }

                dynamic signedRequestJson = context.Client.ParseSignedRequest(Utils.GetKeyValue("Facebook:AppSecret"), Request.Params["signed_request"]);
                signedRequest = JsSerializer.Deserialize <FbSignedRequestToken>(signedRequestJson.ToString());
            }
            else
            {
                #region debug mode
                const string json = "{\"algorithm\": \"HMAC-SHA256\",\"issued_at\": 1404917218,\"page\": {\"id\": \"384502031623764\",\"liked\": false,\"admin\": true},\"user\": {\"country\": \"il\",\"locale\": \"en_US\",\"age\": {\"min\": 21}}}";
                signedRequest = JsSerializer.Deserialize <FbSignedRequestToken>(json);
                #endregion
            }
            Logger.Debug("signed request::" + JsSerializer.Serialize(signedRequest));


            if (signedRequest.page != null)
            {
                facebookPageToken = new FacebookLayoutToken
                {
                    Liked         = signedRequest.page.liked
                    , Admin       = signedRequest.page.admin
                    , TrackingId  = signedRequest.page.id
                    , AccessToken = context != null ? context.AccessToken : string.Empty
                };

                if (facebookPageToken.Admin)
                {
                    facebookPageToken.Settings = User.Identity.IsAuthenticated ? GetSettingsViewToken(facebookPageToken.TrackingId) : facebookPageToken.TrackingId.ToDefaultSettingsToken();
                }
            }

            return(facebookPageToken == null?View("Error") : View("FacebookFrames", facebookPageToken));
        }
コード例 #26
0
        public async Task <ActionResult> RecommendGifts(string friendId, FacebookContext context)
        {
            if (!String.IsNullOrEmpty(friendId))
            {
                var friend = await context.Client.GetFacebookObjectAsync <MyAppUserFriend>(friendId);

                if (friend != null)
                {
                    var products = await RecommendationEngine.RecommendProductAsync(friend);

                    ViewBag.FriendName = friend.Name;
                    return(View(products));
                }
            }

            return(View("Error"));
        }
コード例 #27
0
        public static void ClassInitialize(TestContext ctx)
        {
            var syncPath = SyncPath;

            if (!Directory.Exists(syncPath))
            {
                Directory.CreateDirectory(syncPath);
            }
            var cookieFile = Path.Combine(syncPath, CookieFile);

            _ctx = new FacebookContext
            {
                Logger            = (x) => Console.WriteLine(x),
                CookiesAsString   = (File.Exists(cookieFile) ? File.ReadAllText(cookieFile) : null),
                CookiesWriter     = (x) => File.WriteAllText(cookieFile, x),
                ServiceCredential = "Facebook",
            };
        }
コード例 #28
0
        public ActionResult VotingIndex(FacebookContext context, int VotingId)
        {
            Session["context"] = context;

            if (ModelState.IsValid)
            {
                var pm       = new pmForVotingIndex();
                var dbVoting = serviceVoting.GetVotingById(VotingId);
                pm.VotingInfo = new pmVotingForIndex {
                    Id = dbVoting.Id, Name = dbVoting.Name, IsLock = dbVoting.IsClosed, IsPersonal = dbVoting.IsPeople
                };
                pm.VotingVariants = serviceVoting.GetUserVotes(VotingId, context.UserId);

                return(View(pm));
            }

            return(View("Error"));
        }
コード例 #29
0
        public async Task <ActionResult> Index(FacebookContext context)
        {
            if (ModelState.IsValid)
            {
                var user = await context.Client.GetCurrentUserAsync <FacebookUser>();

                if (string.IsNullOrEmpty(user.Id))
                {
                    return(RedirectToAction("Anonymous"));
                }



                return(View(user));
            }

            return(Redirect("https://apps.facebook.com/billmorris"));
        }
コード例 #30
0
        public IEnumerable <FacebookSimpleUser> GetUsersForRating(FacebookContext context, int from)
        {
            List <FacebookSimpleUser> result = new List <FacebookSimpleUser>();

            var dbUsers = db.GetUsersSortedByAvtoritet(from + 10);

            var dbNeedUsers = GetNext <GetUsersSortedByAvtoritet_Result>(dbUsers, from, 10);

            foreach (var dbUser in dbNeedUsers)
            {
                var ratingUser = new FacebookSimpleUser(db.Users.Single(u => u.UserId == dbUser.UserId));
                ratingUser.PositionInAvtoritet = (int)dbUser.RowNumber.Value;
                ratingUser.Avtoritet           = Math.Round(dbUser.Avtoritet + AvtoritetConts, 2);
                result.Add(ratingUser);
            }


            return(result);
        }
 public ValidateWriteFeedParamsNoAccessTokenTests()
 {
     _facebookContext = new FacebookContext(new FacebookSettings());
 }
 public ValidateWriteFeedParamsDummyAccessTokenTests()
 {
     _facebookContext = new FacebookContext(new FacebookSettings { AccessToken = "dummy_access_token" });
 }
コード例 #33
0
 public WriteFeedTests()
 {
     _fbContext = new FacebookContext(new FacebookSettings { AccessToken = Helpers.AccessToken });
 }
コード例 #34
0
        public virtual void OnAuthorization(AuthorizationContext filterContext)
        {
            if (filterContext == null)
            {
                throw new ArgumentNullException("filterContext");
            }

            IEnumerable<FacebookAuthorizeAttribute> authorizeAttributes = filterContext.ActionDescriptor
                .GetCustomAttributes(typeof(FacebookAuthorizeAttribute), inherit: true)
                .Union(filterContext.ActionDescriptor.ControllerDescriptor
                    .GetCustomAttributes(typeof(FacebookAuthorizeAttribute), inherit: true))
                .OfType<FacebookAuthorizeAttribute>();
            if (!authorizeAttributes.Any())
            {
                return;
            }

            FacebookClient client = _config.ClientProvider.CreateClient();
            HttpRequestBase request = filterContext.HttpContext.Request;
            dynamic signedRequest = FacebookRequestHelpers.GetSignedRequest(
                filterContext.HttpContext,
                rawSignedRequest =>
                {
                    return client.ParseSignedRequest(rawSignedRequest);
                });
            string userId = null;
            string accessToken = null;
            if (signedRequest != null)
            {
                userId = signedRequest.user_id;
                accessToken = signedRequest.oauth_token;
            }

            NameValueCollection parsedQueries = HttpUtility.ParseQueryString(request.Url.Query);
            HashSet<string> requiredPermissions = PermissionHelper.GetRequiredPermissions(authorizeAttributes);
            bool handleError = !String.IsNullOrEmpty(parsedQueries["error"]);

            // This must occur AFTER the handleError calculation because it modifies the parsed queries.
            string redirectUrl = GetRedirectUrl(request, parsedQueries);

            // Check if there was an error and we should handle it.
            if (handleError)
            {
                Uri errorUrl;

                if (String.IsNullOrEmpty(_config.AuthorizationRedirectPath))
                {
                    errorUrl = DefaultAuthorizationRedirectUrl;
                }
                else
                {
                    errorUrl = GetErroredAuthorizeUri(redirectUrl, requiredPermissions);
                }

                filterContext.Result = CreateRedirectResult(errorUrl);

                // There was an error so short circuit
                return;
            }

            FacebookContext facebookContext = new FacebookContext
            {
                Client = client,
                SignedRequest = signedRequest,
                AccessToken = accessToken,
                UserId = userId,
                Configuration = _config
            };

            PermissionContext permissionContext = new PermissionContext
            {
                FacebookContext = facebookContext,
                FilterContext = filterContext,
                RequiredPermissions = requiredPermissions,
            };

            // Check if we need to prompt for default permissions.
            if (signedRequest == null || String.IsNullOrEmpty(userId) || String.IsNullOrEmpty(accessToken))
            {
                PromptDefaultPermissions(permissionContext, redirectUrl);
            }
            else if (requiredPermissions.Any())
            {
                PermissionsStatus currentPermissionsStatus = _config.PermissionService.GetUserPermissionsStatus(userId, accessToken);
                // Instead of performing another request to gather "granted" permissions just parse the status
                IEnumerable<string> currentPermissions = PermissionHelper.GetGrantedPermissions(currentPermissionsStatus);
                IEnumerable<string> missingPermissions = requiredPermissions.Except(currentPermissions);

                // If we have missing permissions than we need to present a prompt or redirect to an error 
                // page if there's an error.
                if (missingPermissions.Any())
                {
                    permissionContext.MissingPermissions = missingPermissions;
                    permissionContext.DeclinedPermissions = PermissionHelper.GetDeclinedPermissions(currentPermissionsStatus);
                    permissionContext.SkippedPermissions = PermissionHelper.GetSkippedPermissions(
                        filterContext.HttpContext.Request,
                        missingPermissions,
                        permissionContext.DeclinedPermissions);

                    PromptMissingPermissions(permissionContext, redirectUrl);
                }
            }
        }
コード例 #35
0
 public FacebookUser GetFacebookUser(IBucket bucket)
 {
     var facebookContext = new FacebookContext(_facebookSettings);
     return facebookContext.Get<FacebookUser>(bucket.Items[FacebookObject.KeyId].Value.ToString(), null);
 }