HttpRedirect для каждой ссылки в приложении FBML, почему? - PullRequest
0 голосов
/ 06 января 2011

Я установил SDK в своем приложении FB, но на всю жизнь не могу понять, почему происходит перенаправление.

Приложение представляет собой IFrame, поэтому для тестирования у меня есть две страницы, на первой странице - ссылка на вторую страницу, когда я нажимаю на ссылку, вся страница перенаправляется в отличие от перенаправления IFrame src.

Обе страницы проверяют, вошел ли пользователь со следующим кодом.

protected string requiredAppPermissions = "user_about_me,email";
protected FacebookApp fbApp;
protected CanvasAuthorizer authorizer;

protected void Page_Load(object sender, EventArgs e)
{
    fbApp = new FacebookApp();
    authorizer = new CanvasAuthorizer(fbApp);
    authorizer.Perms = requiredAppPermissions;



    if (authorizer.Authorize())
    {

    }


}

Я заглянул в источник и могу видеть это в FacebookAppRedirectHttpHandler. Я просто не могу понять, почему вы хотите продолжать перенаправлять полную страницу для каждой навигационной ссылки?

1 Ответ

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

Самая важная причина заключается в том, что Facebook передает аутентификацию подписанному запросу источнику при каждом запросе. Это делается либо с помощью POST в теле, либо с помощью GET в строке запроса. Мы делаем это потому, что куки не на 100% надежны. Если бы мы перенаправили в iframe, нам нужно было бы сохранить сеанс пользователя в cookie. Некоторые браузеры, включая Safari, не позволяют приложениям iframe создавать файлы cookie. Есть способы обойти это, но для большинства людей способ, которым мы имеем это, работает лучше всего. Если вы хотите иметь перенаправление внутри iframe без изменения верхнего URL-адреса, вам нужно каким-то образом сохранить сеанс и передать его на вторую страницу. Вы можете сделать это, добавив его в строку запроса (сложно) или сохранив его в сеансе (не очень масштабируемый) или используя куки (не надежно).

...