facebook приложение получает перенаправленный вид холста

Я использую iframe для рендеринга моего приложения с моего сервера. проблема в том, что когда я нажимаю ссылку в своем приложении, меня перенаправляют на мой сервер. Я имею в виду, что я остаюсь на этой странице холста на секунду, а затем вместо того, чтобы просматривать его в iframe на веб-сайте facebook, я перенаправил URL-адрес приложения на свой сервер. Я использую PHP и MySQL.

почему это происходит.

Информация о Firebug: это информация POST, которую дает firebug. из-за вышеуказанной проблемы это также не POSTing к БД.

<html> <body> <script type="text/javascript"> top.location.href = "http://www.facebook.com/login.php?v=1.0&api_key="xxxxx"&next=http%3A%2F%2F<my-web-server.com>%2F<appfolder>%2Fuser_submit.php"; </script> 

РЕДАКТИРОВАТЬ
по-видимому, он отлично работает в Chrome для Mac.

EDIT 2
что я только что узнал, [остановив] браузер на странице facebook через Firebug: только эта часть приложения загружается на страницу Facebook. остальная часть приложения загружается после перенаправления его на мой сервер.

 <body> <div id="wrap-iframe"> <script type="text/javascript"> top.location.href = "http://www.facebook.com/login.php?v=1.0&api_key="xxxxx"&next=http%3A%2F%2Fmy-domain-server.com%2Fapplocation%2Fuser.php"; </script></div></body> 

ИЗМЕНИТЬ 3
Я немного потрудился, и, судя по всему, он еще больше разозлил его. теперь даже первая страница перенаправляет меня. Если бы я только вспомнил, что я сделал … 🙁

 Warning: Cannot modify header information - headers already sent by (output started at /home/amitver/public_html/roadies/user.php:7) in /home/amitver/public_html/roadies/facebook.php on line 257 Warning: Cannot modify header information - headers already sent by (output started at /home/amitver/public_html/roadies/user.php:7) in /home/amitver/public_html/roadies/facebook.php on line 257 Warning: Cannot modify header information - headers already sent by (output started at /home/amitver/public_html/roadies/user.php:7) in /home/amitver/public_html/roadies/facebook.php on line 257 Warning: Cannot modify header information - headers already sent by (output started at /home/amitver/public_html/roadies/user.php:7) in /home/amitver/public_html/roadies/facebook.php on line 261 

У меня была эта проблема некоторое время назад. Две вещи, которые нужно попробовать:

  1. Убедитесь, что перед открытием <?php нет символов / пробелов (он должен быть первым в файле)
  2. Вы вызываете require_frame ()?

попробуйте поместить этот код поверх своей страницы:

 ob_start(); 

Это должно решить проблему, по крайней мере, ошибки «уже отправленных».

Для этого есть известная причина, но нужно найти какое-то исследование. IIRC, что происходит, когда кто-то меняет страницы внутри вашего iframe, вы делаете еще один вызов require_login. клиент FB пытается использовать доступные данные для аутентификации – post / get / cookies, но если он не работает, он перенаправляется на вход fb. Если пользователь уже вошел в систему и авторизировал ваше приложение, это мгновенно (невидимо) перенаправит обратно в ваше приложение, но есть ошибка на конце facebook (я думаю), которая заставляет его перенаправлять ваш URL-адрес обратного вызова вместо вашего URL-адреса холста , следовательно, выскакивая из кадра.

Решение: передайте параметры fb_ get в строку запроса на каждую страницу. В основном возьмите все, начиная с «fb_» в URL-адресе и привяжите его ко всем вашим ссылкам. Это дает клиенту api что-то еще для проверки.

http://www.facebook.com/login.php?v=1.0&api_key= "xxxxx" & next = http://someurl.com/user.php&canvas=1 ";

добавление canvas = 1 похоже на трюк. Сохраняет его в холсте и не открывает URL-адрес обратного вызова.