Как перенаправить пользователя на страницу входа в Facebook из холста?

Возможное дублирование:
Вход в Facebook и перенаправление iframe

Когда пользователь не вошел в facebook, но напрямую посещает URL-адрес холста, приложение отображается в состоянии выхода из системы, поскольку ему не отправляется токен доступа (или подписанный запрос).

НО, поскольку приложение оформлено в рамку, и я НЕ использую Javascript SDK (с использованием модуля Perl OAuth), как мне сказать Facebook перейти на страницу входа вместо загрузки страницы приложения холста, вышедшей из системы?


person qodeninja    schedule 26.01.2012    source источник


Ответы (2)


Я столкнулся с этой же проблемой при попытке перенаправить пользователей в PayPal для совершения платежа.

Проблема, которую вы пытаетесь объяснить, заключается в следующем:

  • Приложениям Facebook Canvas не разрешен доступ к родительскому окну
  • Приложения Canvas могут перенаправлять только на домены, указанные в поле Домен приложения раздела Основная информация приложения в настройках (https://developers.facebook.com/apps/<app_id>/summary)

Единственный способ выполнить аутентификацию - это:

  • Используйте SDK JavaScript, чтобы открыть окно авторизации, или
  • Используйте JavaScript для перенаправления на страницу oauth в Facebook (top.location = "<url>")
person Graham Swan    schedule 27.01.2012

Поскольку код для iframe принадлежит вам, вам следует выполнить перенаправление с помощью своего кода. Facebook загружает только URL-адрес, который вы указали в настройках приложения. Для настроек приложения не существует URL-адреса для входа в систему и URL-адреса для выхода из системы.

person DMCS    schedule 26.01.2012
comment
но я не могу перенаправить на стороне сервера из iframe, вы предлагаете мне использовать Javascript? - person qodeninja; 26.01.2012
comment
Почему вы не можете выполнить перенаправление с помощью серверного кода? Разве ваш код не контролирует то, что вы отправляете клиенту? - person DMCS; 26.01.2012
comment
да, но разве конечный результат - это не Javascript? Когда я говорю, что не могу сделать это на стороне сервера, я имею в виду перенаправления заголовков - потому что приложение содержится в iframe. Вы понимаете, что я имею в виду, брат? - person qodeninja; 26.01.2012
comment
Когда пользователь заходит на вашу страницу, вы декодируете signed_request, который ваш сервер получает в параметрах HTTP Post, чтобы узнать, вошли он в систему или нет, верно? - person DMCS; 26.01.2012
comment
Что вы можете. Я делаю это с помощью производственного кода. Код C #: Response.Write("<script>top.location.href='URL HERE';</script>");Response.End(); - person DMCS; 27.01.2012
comment
Спасибо за ваш отзыв - person qodeninja; 28.01.2012