Facebook C # SDK - проблемы при перенаправлении на другую страницу - PullRequest
2 голосов
/ 01 февраля 2011

У меня есть приложение IFrame для Facebook (asp.net / Facebook C # SDK http://facebooksdk.codeplex.com/). Страница по умолчанию работает нормально. Я использую следующий код для аутентификации:

IFacebookSettings FbSettings = FacebookSettings.Current;
FacebookApp Fb = new FacebookApp(FbSettings);
CanvasAuthorizer FbAuthorizer = new CanvasAuthorizer(Fb);

if (!FbAuthorizer.IsAuthorized())
{
    Response.Redirect("~/Login.aspx?returnUrl=" + HttpUtility.UrlEncode(Request.Url.PathAndQuery));
    Response.End();
}
else
{
    CurrentUser = new FacebookUser((JsonObject)Fb.Api("/me"));
    CurrentUser.AccessToken = Fb.AccessToken;
}

этот код находится в BasePageкласс OnInit, производный от System.Web.UI.Page. Другие страницы создаются на основе BasePage

При первой загрузке (default.aspx) аутентификация завершается (пользователь перенаправляется на страницу входа, а затем автоматически перенаправляется обратно, как в примере, представленном в SDK).

Итак, когда домашняя страница (default.aspx) наконец загружена, я нажимаю гиперссылку, которая находится на странице. Гиперссылка перемещает IFrame к другому файлу aspx вподпапка, также производная от класса BasePage.

Вот где возникает проблема:
Когда загружается второй (внутренний) aspx, он также перенаправляется на страницу входа, а затем обратно.Internet Explorer / Safari) я получаю бесконечное перенаправление для входа и возврата на внутреннюю страницу.

что я не так делаю?

РЕДАКТИРОВАТЬ: У меня был неверный параметр canvasUrl в web.config, который указывал на неверный URL, этот вопрос следует считать закрытым.

Ответы [ 2 ]

2 голосов
/ 04 февраля 2011

Обновление до последней версии Facebook C # SDK (5.0.1). Это должно решить вашу проблему.

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

изменить это в вашем web.config. Это позволяет вам сохранять сеанс при перенаправлении страницы

 <system.web>
<compilation debug="true" targetFramework="4.0" />
<pages enableViewState="true" validateRequest="false" />
<httpRuntime requestValidationMode="2.0"/>
<!--<sessionState cookieless="true" regenerateExpiredSessionId="true" />-->

...