public FacebookContextSettings()
        {
            FacebookWebContext facebookContext = FacebookWebContext.Current;

            IFacebookApplication  settings;
            FacebookSignedRequest signedRequest;

            if (facebookContext.SignedRequest == null)
            {
                // ajax requests won't have a signed request, so we need to build it from the current http request
                // see http://facebooksdk.codeplex.com/discussions/251878
                settings      = FacebookApplication.Current;
                signedRequest = FacebookSignedRequest.Parse(settings, SignedRequest);
            }
            else
            {
                settings      = facebookContext.Settings;
                signedRequest = facebookContext.SignedRequest;
            }

            CanvasPage  = settings.CanvasPage;
            AccessToken = signedRequest.AccessToken;
            AppId       = settings.AppId;
            UserId      = signedRequest.UserId;
        }
        public override void OnAuthorization(AuthorizationContext filterContext, IFacebookApplication settings)
        {
            var authorizer = new FacebookWebContext(settings, filterContext.HttpContext);

            if (!string.IsNullOrEmpty(Permissions) && Permissions.IndexOf(" ") != -1)
            {
                throw new ArgumentException("Permissions cannot contain whitespace.");
            }

            long?userId = (null != FacebookWebContext.Current.Session) ? (long?)FacebookWebContext.Current.Session.UserId : null;

            if (null == userId || !AuthorizedUsers.Contains(userId.Value))
            {
                if (!authorizer.IsAuthorized(ToArrayString(Permissions)))
                {
                    this.HandleUnauthorizedRequest(filterContext, FacebookApplication.Current);
                }
                else
                {
                    if (!AuthorizedUsers.Contains(FacebookWebContext.Current.Session.UserId))
                    {
                        AuthorizedUsers.Add(FacebookWebContext.Current.Session.UserId);
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FacebookApp"/> class.
        /// </summary>
        /// <param name="request">
        /// The request.
        /// </param>
        /// <param name="accessToken">
        /// The access token.
        /// </param>
        public FacebookApp(FacebookWebContext request, string accessToken)
            : this(request)
        {
            Contract.Requires(!string.IsNullOrEmpty(accessToken));

            AccessToken = accessToken;
        }
Example #4
0
        public FacebookContextSettings()
        {
            FacebookWebContext context = FacebookWebContext.Current;

            AppId  = context.Settings.AppId;
            UserId = context.UserId;
        }
Example #5
0
        public override void OnAuthorization(AuthorizationContext filterContext, IFacebookApplication facebookApplication)
        {
            var authorizer = new FacebookWebContext(facebookApplication, filterContext.HttpContext);

            if (!authorizer.IsAuthorized(string.IsNullOrEmpty(Permissions) ? null : Permissions.Split(',')))
            {
                throw new UnauthorizedAccessException();
            }
        }
        public override void OnAuthorization(AuthorizationContext filterContext, IFacebookApplication facebookApplication)
        {
            var authorizer = new FacebookWebContext(facebookApplication, filterContext.HttpContext);

            if (!string.IsNullOrEmpty(Permissions) && Permissions.IndexOf(" ") != -1)
            {
                throw new ArgumentException("Permissions cannot contain whitespace.");
            }

            if (!authorizer.IsAuthorized(ToArrayString(Permissions)))
            {
                filterContext.Result = new RedirectResult(this.LoginUrl ?? "/");
            }
        }
Example #7
0
        /// <summary>
        /// Authorization.
        /// </summary>
        /// <param name="filterContext">The filter context.</param>
        /// <param name="facebookApplication">The Facebook applicatio settings.</param>
        public override void OnAuthorization(AuthorizationContext filterContext, IFacebookApplication facebookApplication)
        {
            var authorizer = new FacebookWebContext(facebookApplication, filterContext.HttpContext);

            if (!string.IsNullOrEmpty(Permissions) && Permissions.IndexOf(" ") != -1)
            {
                throw new ArgumentException("Permissions cannot contain whitespace.");
            }

            if (!authorizer.IsAuthorized(ToArrayString(Permissions)))
            {
                filterContext.Result = new RedirectResult(LoginUrl ?? "/");
            }
        }
        /// <summary>
        /// Authorization.
        /// </summary>
        /// <param name="filterContext">The filter context.</param>
        /// <param name="settings">The Facebook application settings.</param>
        /// <exception cref="ArgumentException">Throws if Permissions contains space.</exception>
        public override void OnAuthorization(AuthorizationContext filterContext, IFacebookApplication settings)
        {
            var authorizer = new FacebookWebContext(settings, filterContext.HttpContext);

            if (!string.IsNullOrEmpty(Permissions) && Permissions.IndexOf(" ") != -1)
            {
                throw new ArgumentException("Permissions cannot contain whitespace.");
            }

            if (!authorizer.IsAuthorized(ToArrayString(Permissions)))
            {
                this.HandleUnauthorizedRequest(filterContext, FacebookApplication.Current);
            }
        }
Example #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FacebookApp"/> class.
        /// </summary>
        /// <param name="request">
        /// The request.
        /// </param>
        public FacebookApp(FacebookWebContext request)
        {
            _request            = request;
            AccessToken         = request.AccessToken;
            _isSecureConnection = request.IsSecureConnection;

            UseFacebookBeta = _request.Settings.UseFacebookBeta;

            if (request.HttpContext.Request.UrlReferrer != null && _request.HttpContext.Request.UrlReferrer.Host == "apps.beta.facebook.com")
            {
                UseFacebookBeta = true;
            }

            // set app id and app secret for compatibility from v4.
            AppSecret = FacebookApplication.Current.AppSecret;
            AppId     = FacebookApplication.Current.AppId;
        }
Example #10
0
        //
        // GET: /Facebook/LogOn
        public ActionResult LogOn(string returnUrl)
        {
            var fbWebContext = new FacebookWebContext(FacebookApplication.Current, ControllerContext.HttpContext); // or FacebookWebContext.Current;

            if (fbWebContext.IsAuthorized())
            {
                if (!string.IsNullOrWhiteSpace(returnUrl))
                {
                    if (Url.IsLocalUrl(returnUrl))
                    {
                        return(new RedirectResult(returnUrl));
                    }
                }

                return(RedirectToAction("Index", "Home"));
            }

            return(View());
        }
        public FacebookContextSettings()
        {
            FacebookWebContext facebookContext = FacebookWebContext.Current;

            IFacebookApplication  settings;
            FacebookSignedRequest signedRequest;

            if (facebookContext.SignedRequest == null)
            {
                // ajax requests won't have a signed request, so we need to build it from the current http request
                // see http://facebooksdk.codeplex.com/discussions/251878
                settings = FacebookApplication.Current;

                try
                {
                    signedRequest = FacebookSignedRequest.Parse(settings, SignedRequest);
                }
                catch (Exception exception)
                {
                    // Facebook posts to the iframe, but only IE supports this so the first request will always fail for non IE browsers
                    if (HttpContext.Current.Request.Browser.Browser.Contains("IE"))
                    {
                        throw;
                    }

                    // it doesn't break anything so we'll throw a custom exception so that we can filter it out later
                    InvalidSignedRequestException signedRequestException =
                        new InvalidSignedRequestException("Invalid SignedRequest - Non - IE (" + SignedRequest + ")", exception);
                    throw signedRequestException;
                }
            }
            else
            {
                settings      = facebookContext.Settings;
                signedRequest = facebookContext.SignedRequest;
            }

            CanvasPage  = settings.CanvasPage;
            AccessToken = signedRequest.AccessToken;
            AppId       = settings.AppId;
            UserId      = signedRequest.UserId;
        }
Example #12
0
        public ActionResult LogOn(string returnUrl)
        {
            var fbWebContext = new FacebookWebContext(FacebookApplication.Current, ControllerContext.HttpContext);

            if (fbWebContext.IsAuthorized(ExtendedPermissions.Split(',')))
            {
                if (!string.IsNullOrWhiteSpace(returnUrl))
                {
                    if (Url.IsLocalUrl(returnUrl))
                    {
                        return(new RedirectResult(returnUrl));
                    }
                }

                return(RedirectToAction("Index", "Home"));
            }

            ViewBag.ExtendedPermissions = ExtendedPermissions;
            return(View());
        }
Example #13
0
        public FacebookContextSettings()
        {
            IFacebookApplication settings = FacebookApplication.Current;

            if (settings != null)
            {
                CanvasPage = settings.CanvasPage;
                AppId      = settings.AppId;
            }

            FacebookWebContext    facebookContext = FacebookWebContext.Current;
            FacebookSignedRequest signedRequest   = facebookContext.SignedRequest;

            if (settings != null && signedRequest == null)
            {
                signedRequest = ParseSignedRequest(settings);
            }

            if (signedRequest != null)
            {
                AccessToken = signedRequest.AccessToken;
                UserId      = signedRequest.UserId;
            }
        }