Exemplo n.º 1
0
        public ActionResult RegisterViaFacebook(string signed_request)
        {
            var signedRequest = FacebookSignedRequest.Parse(AppSettingConfig.Current.FacebookApplicationSecret, signed_request);

            string name     = ((dynamic)signedRequest.Data).registration.name;
            string nickname = ((dynamic)signedRequest.Data).registration.nickname;
            string email    = ((dynamic)signedRequest.Data).registration.email;
            string password = ((dynamic)signedRequest.Data).registration.password ?? Guid.NewGuid().ToString();

            var model = new RegisterModel()
            {
                Email    = email,
                Password = password,
                UserName = nickname
            };

            model.ConfirmPassword = model.Password;

            var validationContext = new ValidationContext(model, null, null);
            var validationResults = new List <ValidationResult>();

            if (!Validator.TryValidateObject(model, validationContext, validationResults, true))
            {
                foreach (var error in validationResults)
                {
                    ModelState.AddModelError("", error.ErrorMessage);
                }
            }

            return(Register(model));
        }
        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 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;
        }
Exemplo n.º 4
0
        private FacebookSignedRequest ParseSignedRequest(IFacebookApplication settings)
        {
            HttpContext context = HttpContext.Current;

            if (context != null)
            {
                HttpContextWrapper contextWrapper = new HttpContextWrapper(context);
                if (contextWrapper.Request.IsAjaxRequest())
                {
                    // 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

                    try
                    {
                        return(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 (context.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;
                    }
                }
            }

            return(null);
        }