Example #1
0
 public HttpsUrlThen()
 {
     _canvasUrlBuilder = new CanvasUrlBuilder(
         CanvasUrlBuilderHelper.GetFakeFacebookApplication(false),
         CanvasUrlBuilderHelper.GetFakeHttpRequest(
         new Uri("https://localhost:16151/CSASPNETFacebookApp/default.aspx"), null));
 }
 public AndHttpUrlAndReferUrlAsNonAppBetaFacebookThen()
 {
     _canvasUrlBuilder = new CanvasUrlBuilder(
         CanvasUrlBuilderHelper.GetFakeFacebookApplication(false),
         CanvasUrlBuilderHelper.GetFakeHttpRequest(
         new Uri("http://localhost:16151/CSASPNETFacebookApp/default.aspx"),
         new Uri("http://apps.facebook.com/app/default.aspx")));
 }
 public GivenHttp_Beta_NoDefaultCancelUrlPathThen()
 {
     _canvasUrlBuilder = new CanvasUrlBuilder(
         new DefaultFacebookApplication
         {
             CanvasUrl = "http://localhost:16151/CSASPNETFacebookApp/",
             CanvasPage = "http://apps.facebook.com/csharpsamplestwo/"
         },
         GetHttpRequest());
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            CanvasUrlBuilder = new CanvasUrlBuilder(FacebookApplication.Current, new HttpRequestWrapper(Request));

            var client = new FacebookWebClient();
            PicUrlWebClient = ((dynamic)client.Get("/4", new Dictionary<string, object> { { "fields", "picture" } })).picture;
            
            var app = new FacebookApp();
            PicUrlApp = ((dynamic)app.Get("/4", new Dictionary<string, object> { { "fields", "picture" } })).picture;
        }
        internal static CanvasUrlBuilder GetCanvasUrlBuilder(HttpContextWrapper httpContext)
        {
            var items       = httpContext.Items;
            var httpRequest = httpContext.Request;
            CanvasUrlBuilder canvasUrlBuilder;

            if (items[HttpContextKey] == null)
            {
                canvasUrlBuilder      = new CanvasUrlBuilder(FacebookApplication.Current, httpRequest);
                items[HttpContextKey] = canvasUrlBuilder;
            }
            else
            {
                canvasUrlBuilder = (CanvasUrlBuilder)items[HttpContextKey];
            }

            return(canvasUrlBuilder);
        }
Example #6
0
        /// <summary>
        /// Gets the canvas login url.
        /// </summary>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        /// <returns>
        /// Returns the login url.
        /// </returns>
        public Uri GetLoginUrl(IDictionary <string, object> parameters)
        {
            var defaultParameters = new Dictionary <string, object>();

            if (!string.IsNullOrEmpty(LoginDisplayMode))
            {
                defaultParameters["display"] = LoginDisplayMode;
            }

            if (Permissions != null)
            {
                defaultParameters["scope"] = string.Join(",", Permissions);
            }

            var canvasUrlBuilder = new CanvasUrlBuilder(FacebookWebRequest.Settings, FacebookWebRequest.HttpContext.Request);

            return(canvasUrlBuilder.GetLoginUrl(ReturnUrlPath, CancelUrlPath, State, FacebookUtils.Merge(defaultParameters, parameters)));
        }
Example #7
0
        /// <summary>
        /// Gets the canvas login url.
        /// </summary>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        /// <returns>
        /// Returns the login url.
        /// </returns>
        public Uri GetLoginUrl(IDictionary<string, object> parameters)
        {
            Contract.Ensures(Contract.Result<Uri>() != null);

            var defaultParameters = new Dictionary<string, object>();

            if (!string.IsNullOrEmpty(LoginDisplayMode))
            {
                defaultParameters["display"] = LoginDisplayMode;
            }

            if (Permissions != null)
            {
                defaultParameters["scope"] = String.Join(",", Permissions);
            }

            var canvasUrlBuilder = new CanvasUrlBuilder(FacebookWebRequest.Settings, FacebookWebRequest.HttpContext.Request);
            return canvasUrlBuilder.GetLoginUrl(ReturnUrlPath, CancelUrlPath, State, FacebookUtils.Merge(defaultParameters, parameters));
        }
        internal static CanvasUrlBuilder GetCanvasUrlBuilder(HttpContextWrapper httpContext)
        {
            Contract.Ensures(Contract.Result<CanvasUrlBuilder>() != null);

            var items = httpContext.Items;
            var httpRequest = httpContext.Request;
            CanvasUrlBuilder canvasUrlBuilder;

            if (items[HttpContextKey] == null)
            {
                canvasUrlBuilder = new CanvasUrlBuilder(FacebookApplication.Current, httpRequest);
                items[HttpContextKey] = canvasUrlBuilder;
            }
            else
            {
                canvasUrlBuilder = (CanvasUrlBuilder)items[HttpContextKey];
            }

            return canvasUrlBuilder;
        }
        protected internal override System.Uri GetLoginUrl(IFacebookApplication settings, HttpContextBase httpContext, IDictionary<string, object> parameters)
        {
            var authorizer = new CanvasAuthorizer(settings, httpContext)
            {
                ReturnUrlPath = ReturnUrlPath,
                CancelUrlPath = CancelUrlPath,
                LoginDisplayMode = LoginDisplayMode
            };

            if (!String.IsNullOrEmpty(Permissions))
            {
                authorizer.Permissions = Permissions.Replace(" ", String.Empty).Split(',');
            }

            if (string.IsNullOrEmpty(CancelUrlPath))
            {
                // set it to this same url instead of going to facebook.com
                var canvasUrlBuilder = new CanvasUrlBuilder(settings, httpContext.Request);
                var currentPathAndQuery = canvasUrlBuilder.CurrentCanvasPathAndQuery;

                if (currentPathAndQuery.Contains("?"))
                {
                    var parts = currentPathAndQuery.Split('?');
                    if (parts.Length == 2 && !string.IsNullOrEmpty(parts[1]))
                    {
                        var queryStrings = FacebookUtils.ParseUrlQueryString(parts[1]);

                        // remove oauth 2 error querystrings.
                        // error_reason=user_denied&error_denied=access_denied&error_description=The+user+denied+your+request.
                        if (queryStrings.ContainsKey("error_reason"))
                        {
                            queryStrings.Remove("error_reason");
                        }

                        if (queryStrings.ContainsKey("error_denied"))
                        {
                            queryStrings.Remove("error_denied");
                        }

                        if (queryStrings.ContainsKey("error_description"))
                        {
                            queryStrings.Remove("error_description");
                        }

                        currentPathAndQuery = parts[0] + "?" + FacebookUtils.ToJsonQueryString(queryStrings);
                    }
                }

                authorizer.CancelUrlPath = currentPathAndQuery;
            }

            return authorizer.GetLoginUrl(null);
        }
Example #10
0
 /// <summary>
 /// Handle unauthorized requests.
 /// </summary>
 public override void HandleUnauthorizedRequest()
 {
     FacebookWebRequest.HttpContext.Response.ContentType = "text/html";
     FacebookWebRequest.HttpContext.Response.Write(CanvasUrlBuilder.GetCanvasRedirectHtml(GetLoginUrl(null)));
 }
        private string GeneratePageLink(string linkText, int pageNumber)
        {
            var routeDataValues = viewContext.RequestContext.RouteData.Values;
            RouteValueDictionary pageLinkValueDictionary;
            // Avoid canonical errors when page count is equal to 1.
            if (pageNumber == 1)
            {
                pageLinkValueDictionary = new RouteValueDictionary(this.linkWithoutPageValuesDictionary);
                if (routeDataValues.ContainsKey("page"))
                {
                    routeDataValues.Remove("page");
                }
            }
            else
            {
                pageLinkValueDictionary = new RouteValueDictionary(this.linkWithoutPageValuesDictionary) { { "page", pageNumber } };
            }

            // To be sure we get the right route, ensure the controller and action are specified.
            if (!pageLinkValueDictionary.ContainsKey("controller") && routeDataValues.ContainsKey("controller"))
            {
                pageLinkValueDictionary.Add("controller", routeDataValues["controller"]);
            }
            if (!pageLinkValueDictionary.ContainsKey("action") && routeDataValues.ContainsKey("action"))
            {
                pageLinkValueDictionary.Add("action", routeDataValues["action"]);
            }

            // 'Render' virtual path.
            var virtualPathForArea = RouteTable.Routes.GetVirtualPathForArea(viewContext.RequestContext, pageLinkValueDictionary);

            if (virtualPathForArea == null)
                return null;

            CanvasUrlBuilder urlBuilder = new CanvasUrlBuilder();
            var fullUrl = urlBuilder.BuildCanvasPageUrl(virtualPathForArea.VirtualPath).ToString();

            var stringBuilder = new StringBuilder("<a target='_top'");

            stringBuilder.AppendFormat(" href=\"{0}\">{1}</a>", fullUrl, linkText);

            var url = stringBuilder.ToString();

            return url;
        }