Facebook C # SDK - проблема с приложением Iframe и файлами cookie Safari - PullRequest
0 голосов
/ 31 января 2011

Я создаю приложение Iframe для Facebook.Я не использую Javascript SDK.

Это код, который я использую, и он хорошо работает во всех браузерах, кроме Safari.

protected FacebookApp app;

Защищено CanvasAuthorizer cauth;

Response.AddHeader ("p3p", "CP = \" IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS НАШ IND CNT \ "");app = new FacebookApp ();cauth = новый CanvasAuthorizer (приложение);if (! cauth.IsAuthorized ()) {myAuth auth = new myAuth ();myAuth.Authorize (приложение, запрос, ответ, завивка);}

    if (cauth.Authorize())
    {

// Делайте здесь свои приложения}

public class myAuth
{
    public static void Authorize(FacebookApp fbApp, System.Web.HttpRequest request, System.Web.HttpResponse response, string perms)
    {
        Authorize(fbApp, request, response, perms, null);
    }

    public static void Authorize(FacebookApp fbApp, System.Web.HttpRequest request, System.Web.HttpResponse response, string perms, string redirectUrl)
    {
        Uri url = fbApp.GetLoginUrl();

        NameValueCollection nvc = System.Web.HttpUtility.ParseQueryString(url.Query);

        if (!string.IsNullOrEmpty(perms))
            nvc.Add("req_perms", perms);

        if (!string.IsNullOrEmpty(redirectUrl))
            nvc["next"] = GetAppRelativeUrl(redirectUrl);
        else if (request.QueryString.Count > 0)
            nvc["next"] = GetAppRelativeUrl(request.Path.Replace(request.ApplicationPath, string.Empty).Replace(request.ApplicationPath.ToLower(), string.Empty) + "?" + request.QueryString);
        else
            nvc["next"] = GetAppRelativeUrl(request.Path.Replace(request.ApplicationPath, string.Empty).Replace(request.ApplicationPath.ToLower(), string.Empty));

        UriBuilder ub = new UriBuilder(url);
        ub.Query = nvc.ToString();

        string content = CanvasUrlBuilder.GetCanvasRedirectHtml(ub.Uri);
        response.ContentType = "text/html";
        response.Write(content);
        response.End();
    }

    public static string GetAppRelativeUrl(string url)
    {
        return CanvasSettings.Current.CanvasPageUrl.ToString();
    }
}

Я читал о том, что Safari не разрешает использование сторонних файлов cookie, и я полагаю, что именно в этом проблема.Мой вопрос: есть ли способ справиться с этим с помощью SDK, или каковы мои варианты.

С уважением, Андерс Петтерссон

Ответы [ 3 ]

0 голосов
/ 07 июля 2012

здесь я получаю ту же проблему, но теперь у меня есть решение для сафари ..

Просто измените режим проверки в web.config

<system.web>

<pages enableViewState="true" validateRequest="false" />
<httpRuntime requestValidationMode="2.0"/>
<!--
 Enable this code if you get still problem
<sessionState cookieless="true" regenerateExpiredSessionId="true" />-->

0 голосов
/ 31 января 2011

У меня были некоторые проблемы с Safari, изменяющим регистр данных, отправляемых в HTTP-заголовках ... убедитесь, что любой ваш анализ / сравнение не учитывает регистр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...