コード例 #1
0
        public async Task <ActionResult> Index()
        {
            #region Permission Check
            PermissionRequestViewModel permissionViewModel = base.GetMissingPermissions();
            if (permissionViewModel != null &&
                permissionViewModel.MissingPermissions.Count > 0)
            {
                return(View("FB_RequestPermission", permissionViewModel));
            }
            #endregion
            var access_token = HttpContext.Items["access_token"].ToString();
            if (!string.IsNullOrEmpty(access_token))
            {
                var appsecret_proof = access_token.GenerateAppSecretProof();
                var fb = new FacebookClient(access_token);

                //Get current user's profile
                dynamic myInfo = await fb.GetTaskAsync("me?fields=first_name,last_name,link,locale,email,name,birthday,gender,location,bio,age_range".GraphAPICall(appsecret_proof));

                //get current picture
                dynamic profileImgResult = await fb.GetTaskAsync("{0}/picture?width=100&height=100&redirect=false".GraphAPICall((string)myInfo.id, appsecret_proof));

                //Hydrate FacebookProfileViewModel with Graph API results
                var facebookProfile = DynamicExtension.ToStatic <FacebookProfileViewModel>(myInfo);
                facebookProfile.ImageURL = profileImgResult.data.url;
                return(View(facebookProfile));
            }
            else
            {
                throw new HttpException(404, "Missing Access Token");
            }
        }
コード例 #2
0
 public ActionResult RequestPermissions(
     string okButton,
     string cancelButton,
     string redirectURI,
     PermissionRequestViewModel acknowledgedPermissionRequest)
 {
     TempData["ProcessingPermissionRequest"] = true;
     if (okButton != null)
     {
         StringBuilder permission_scope = new StringBuilder();
         foreach (FacebookPermissionRequest permission in
                  acknowledgedPermissionRequest.MissingPermissions.
                  Where(x => x.requested == true))
         {
             permission_scope.Append(
                 string.Format("{0} ",
                               permission.permision_scope_value));
         }
         if (permission_scope.Length == 0)
         {
             return(Redirect("Index"));
         }
         else
         {
             var rerequestURL = base.AddPermissions(permission_scope.ToString(), redirectURI);
             return(Redirect(rerequestURL));
         }
     }
     else  //if(cancelButton != null)
     {
         return(Redirect("Index"));
     }
 }
コード例 #3
0
        public async Task <ActionResult> GetMoreData(string NextPageUri)
        {
            if (!string.IsNullOrEmpty(NextPageUri))
            {
                #region Permission Check
                PermissionRequestViewModel permissionViewModel = base.GetMissingPermissions();
                if (permissionViewModel != null &&
                    permissionViewModel.MissingPermissions.Count > 0)
                {
                    return(View("FB_RequestPermission", permissionViewModel));
                }
                #endregion

                #region Get More Paged Data
                var access_token = HttpContext.Items["access_token"].ToString();
                if (!string.IsNullOrEmpty(access_token))
                {
                    var     appsecret_proof = access_token.GenerateAppSecretProof();
                    var     fb             = new FacebookClient(access_token);
                    dynamic nextPageResult = await fb.GetTaskAsync(NextPageUri.GraphAPICall(appsecret_proof));

                    #region Hydrate results
                    //Hydrate FacebookProfileViewModel with Graph API results
                    var userList = new List <FacebookFriendViewModel>();
                    foreach (dynamic friend in nextPageResult.data)
                    {
                        userList.Add(DynamicExtension.ToStatic <FacebookFriendViewModel>(friend));
                    }


                    #endregion

                    #region Paging Results
                    string NextPageURI = string.Empty;

                    if (nextPageResult.paging != null &&
                        nextPageResult.paging.next != null)
                    {
                        NextPageURI = nextPageResult.paging.next;
                    }

                    ViewBag.ShowGetMoreData = GetNextPageQuery(NextPageURI, access_token);
                    #endregion

                    return(PartialView("FindResults", userList));
                }
                else
                {
                    throw new HttpException(404, "Missing Access Token");
                }
                #endregion
            }
            else
            {
                return(null);
            }
        }
コード例 #4
0
        public ActionResult Index()
        {
            #region Permission Check
            PermissionRequestViewModel permissionViewModel = base.GetMissingPermissions();
            if (permissionViewModel != null &&
                permissionViewModel.MissingPermissions.Count > 0)
            {
                return(View("FB_RequestPermission", permissionViewModel));
            }
            #endregion

            return(View());
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            #region Permission Check
            var myBaseController = (BaseController)filterContext.Controller;
            PermissionRequestViewModel permissionViewModel = myBaseController.GetMissingPermissions();
            if (permissionViewModel != null &&
                permissionViewModel.MissingPermissions.Count > 0)
            {
                //Set redirect URI using current http request controller's index action
                permissionViewModel.redirectURI = myBaseController.Url.Action("Index",
                                                                              filterContext.ActionDescriptor.ControllerDescriptor.ControllerName, null,
                                                                              filterContext.HttpContext.Request.Url.Scheme);

                filterContext.Result = myBaseController.FB_RequestPermission(permissionViewModel);
                return;
            }
            #endregion

            base.OnActionExecuting(filterContext);
        }
コード例 #6
0
        public PermissionRequestViewModel GetMissingPermissions()
        {
            bool checkPermission = true;

            if (TempData["ProcessingPermissionRequest"] != null)
            {
                checkPermission = !((bool)TempData["ProcessingPermissionRequest"]);
            }
            if (checkPermission)
            {
                //Check all permission and create list of Missing Permissions
                PermissionRequestViewModel permissionViewModel = new
                                                                 PermissionRequestViewModel();
                permissionViewModel.MissingPermissions =
                    CheckPermissions(
                        GetRequiredPermissions());
                return(permissionViewModel);
            }


            return(null);
        }
コード例 #7
0
 public ActionResult FB_RequestPermission(PermissionRequestViewModel MissingPermissions)
 {
     return(View("FB_RequestPermission", MissingPermissions));
 }
コード例 #8
0
        public async Task <ActionResult> Find(
            string QueryValue,
            string SearchBy,
            string SearchCenterCoordinates)
        {
            #region Permission Check
            PermissionRequestViewModel permissionViewModel = base.GetMissingPermissions();
            if (permissionViewModel != null &&
                permissionViewModel.MissingPermissions.Count > 0)
            {
                return(View("FB_RequestPermission", permissionViewModel));
            }
            #endregion

            #region Facebook Graph API Search call
            var access_token = HttpContext.Items["access_token"].ToString();
            if (!string.IsNullOrEmpty(access_token))
            {
                var appsecret_proof = access_token.GenerateAppSecretProof();
                var fb = new FacebookClient(access_token);

                #region Search For Place
                string _searchCenterParam = string.Empty;
                if (SearchBy == "place" &&
                    !string.IsNullOrEmpty(SearchCenterCoordinates))
                {
                    _searchCenterParam = string.Format("&center={0}&distance={1}",
                                                       SearchCenterCoordinates,
                                                       ConfigurationManager.AppSettings["Facebook_Distance_Meters"].ToString());
                }
                #endregion

                #region Search Facebook Graph Query call
                dynamic myInfo = await fb.GetTaskAsync(
                    (string.Format("search?q={0}&type={1}{2}&limit=50",
                                   QueryValue,
                                   SearchBy,
                                   _searchCenterParam) +
                     "&fields=name,id,picture.type(large).width(100).height(100){{url}}")
                    .GraphAPICall(appsecret_proof));

                #endregion

                #region Hydrate results
                //Hydrate FacebookProfileViewModel with Graph API results
                var userList = new List <FacebookFriendViewModel>();
                foreach (dynamic friend in myInfo.data)
                {
                    userList.Add(DynamicExtension.ToStatic <FacebookFriendViewModel>(friend));
                }


                #endregion

                #region Paging Results
                string NextPageURI = string.Empty;

                if (myInfo.paging != null &&
                    myInfo.paging.next != null)
                {
                    NextPageURI = myInfo.paging.next;
                }

                ViewBag.ShowGetMoreData = GetNextPageQuery(NextPageURI, access_token);
                #endregion

                return(PartialView("FindResults", userList));
            }
            else
            {
                throw new HttpException(404, "Missing Access Token");
            }
            #endregion
        }