Правильный способ перенаправления на вкладку facebook после аутентификации приложения?

Мы размещаем PHP-приложение facebook canvas (http://apps.facebook.com/myapp). Одна из страниц (http://apps.facebook.com/myapp/foobar) требует аутентификации через facebook, чтобы мы могли получить доступ к некоторой информации о пользователе. Это достигается с помощью метода $facebook->getLoginUrl() PHP-SDK для создания URL-адреса для аутентификации и работает должным образом.

С тех пор мы добавили приложение в виде вкладки (iFrame) на нашу страницу (http://www.facebook.com/MyPage?sk=app_nnnnn). Теперь, когда мы пытаемся аутентифицировать пользователя, он перенаправляется на URL-адрес приложения (http://apps.facebook.com/myapp/foobar), а не загружает страницу /foobar в iFrame вкладки, как ожидалось.

Можно ли настроить аутентификацию так, чтобы она не переходила на URL-адрес приложения, а оставалась на вкладке с помощью PHP-SDK? Если да, то каков рабочий процесс, которому я должен следовать, чтобы добиться этого?


person Phillip B Oldham    schedule 08.06.2011    source источник


Ответы (2)


Я бы просто добавил код в http://apps.facebook.com/myapp/foobar для проверки аутентификации, и если да, эхо:

<script type="text/javascript">
    top.location.href = 'http://www.facebook.com/MyPage?sk=whatever';
</script>

Это должно вырваться из iframe и перенаправить вас туда, куда вы хотите.

person Jimmy Sawczuk    schedule 08.06.2011

Способ, которым я достиг этого, заключается в следующем:

  • На странице /myapp/foobar я проверяю, прошел ли пользователь аутентификацию. Если они этого не сделали, я устанавливаю значение сеанса и использую PHP-SDK $facebook->getLoginUrl() для создания URL-адреса аутентификации и отправки ответа, содержащего только javascript для перенаправления window.top.
  • После аутентификации они перенаправляются обратно на главную страницу. Когда эта страница загружается, она проверяет значение сеанса и, если установлено, удаляет его и выдает заголовок перенаправления на /myapp/foobar.

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

person Phillip B Oldham    schedule 09.06.2011