2010-01-01 4 views
1

J'utilise iframe pour rendre mon application depuis mon serveur. le problème est une fois que je clique sur un lien dans mon application, je suis redirigé vers mon serveur. Je veux dire, je reste dans la page de toile pendant une seconde, puis soudainement au lieu de le voir dans un iframe sur le site facebook, je suis redirigé l'URL de l'application sur mon serveur. J'utilise PHP et MySQL.facebook application se rediriger sur la vue de la toile

pourquoi cela se produit-il?

l'info de firebug: c'est l'information de POST que firebug donne. En raison du problème ci-dessus, il n'est pas POSTing à la DB.

<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> 

EDIT
apparemment, il fonctionne très bien dans Chrome pour Mac.


EDIT 2
ce que je viens de découvrir par [Arrêt] le navigateur sur la page facebook par Firebug: que cette partie de l'application est chargée sur la page Facebook. le reste de l'application est chargé après qu'il l'a redirigé vers mon serveur.

<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> 

EDIT 3
J'ai fait quelques bricolages et apparemment, il a provoqué la colère encore plus loin. maintenant même la première page me redirige. Si seulement je me suis rappelé ce que je faisais ... :-(

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 
+0

essayez ce lien .... vous obtiendrez certainement la solution: D http://www.foobots.net/breakouts.html appréciez – RSTanvir

Répondre

0

J'ai eu ce problème de dos pendant quelque temps deux choses à essayer.

  1. Assurez-vous qu'il n'y a pas de caractères/espaces avant balise d'ouverture <?php (il devrait être d'abord dans le fichier)
  2. est-ce que vous appelez require_frame()?
+0

qu'est-ce que require_frame? – amit

+0

require_frame est une fonction facebook api qui indique à facebook si vous souhaitez afficher votre page dans son cadre ou simplement votre page –

0

essayez de mettre ce code sur haut de votre page:

ob_start(); 

Ceci devrait résoudre au moins le problème des erreurs 'en-têtes déjà envoyées'.

0

Il y a une raison connue pour cela, mais il faut une enquête pour trouver. IIRC, ce qui se passe est que lorsque quelqu'un change des pages à l'intérieur de votre iframe, vous faites un autre appel require_login. le client FB tente d'utiliser les données disponibles pour l'authentification - après/get/biscuits - mais si elle échoue, il rediriger vers une connexion fb. Si l'utilisateur est déjà connecté et autorisé votre application, ce sera instantanément (invisiblement) redirect à votre application, mais il y a un bug sur la fin de facebook (je pense) qu'il provoque rediriger vers l'URL de votre rappel au lieu de l'URL de votre toile , donc sortir du cadre.

Solution: passer les fb_ se params dans votre chaîne de requête le long de chaque page. prendre en gros tout en commençant par « fb_ » dans l'URL et le cloue sur tous vos liens. Cela donne au client api quelque chose d'autre à valider.

Questions connexes