2010-03-29 6 views
0

J'ai de sérieux problèmes avec l'application iframe. J'ai besoin d'utiliser de nombreuses bibliothèques JS externes et d'autres stuuf dynamiques pour que l'application FMBL ne puisse pas être faite. Quand j'appelle require_login() j'obtiens une boîte de dialogue d'installation applicaition quand l'application n'est pas déjà installée, ce qui est ok. Mais après l'application d'autorisation entre dans une boucle de redirection sans fin avec des paramètres comme auth_token, installé et ainsi de suite. Hier, j'ai réussi à résoudre ce problème, mais aujourd'hui, il est cassé à nouveau ... Qu'est-ce qui se passe avec FB? Cela me rend fou de trouver une solution, aucun de ceux trouvés sur le net ne semble pas fonctionner.Facebook require_login() dans l'application iFrame

Jusqu'à présent, j'essayé:

http://abhirama.wordpress.com/2010/03/07/facebook-iframe-xfbml-app/ (! 7 mars 2010) http://forum.developers.facebook.com/viewtopic.php?pid=156092 http://www.keywordintellect.com/facebook-development/how-to-set-up-a-facebook-iframe-application-in-php-in-5-minutes/

http://www.markdeepwell.com/2010/02/validating-a-facebook-session-within-an-iframe/ http://forum.developers.facebook.com/viewtopic.php?pid=210449 http://www.ajaxlines.com/ajax/stuff/article/facebook_fbml_rendering_in_iframe_application.php http://www.aratide.com/php/solving-the-break-out-issue-in-iframe-facebook-applications/

Aucune de ces travaillé ... Selon les et quelques documents FB: http://wiki.developers.facebook.com/index.php/FB_RequireFeatures http://wiki.developers.facebook.com/index.php/Cross_Domain_Communication_Channel

Mon exemple des fichiers de test regarder comme suit:

<?php 
//Link in library. 
require_once '../application/vendor/Facebook/facebook.php'; 

//Authentication Keys 
$appapikey = 'XXXX'; 
$appsecret = 'XXXX'; 

//Construct the class 
$facebook = new Facebook($appapikey, $appsecret); 

//Require login 
$user_id = $facebook->require_login(); 

?> 

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> 
<head> 
    <title></title> 
</head> 
<body> 
    <script src="http://static.ak.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script> 
    This is you: <fb:name uid="<?php echo $user_id?>"></fb:name> 
    <?php var_dump($facebook->$this->facebook->api_client->friends_get())?> 
    <script type="text/javascript"> 
FB_RequireFeatures(["XFBML"], function(){ 
    FB.Facebook.init("<?=$appapikey?>", "xd_receiver.html"); 
}); 
    </script> 
</body> 
</html> 

Et fichier cross-domain xd_receiver.html est:

<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
    <head> 
    <title>cross-domain receiver page</title> 
    </head> 
    <body> 
    <script src="http://static.ak.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script> 
    </body> 
</html> 

Comment puis-je le faire fonctionner? J'utilise le framework Kohana pour cela et j'ai déjà remplacé l'en-tête ('Location') avec url :: redirect() dans la bibliothèque php facebook.

Répondre

0

Facebook limite l'utilisation de nombreuses balises HTML. Il semble que vous utilisiez certaines des balises restreintes dans votre code. Avez-vous essayé de les supprimer?

Si vous souhaitez utiliser ces balises (par exemple pour <body>) faire une demande iframe au lieu de FBML ...

+0

Il s'agit d'une application iframe.J'essaie d'appeler require_login à l'intérieur de iframe et je suis redirigé en dehors de Facebook vers mon application sur mon serveur se terminant par une boucle sans fin avec la variable auth_token dans l'URI. J'ai aussi essayé de faire une application FBML et de mettre iframe dans canvas en utilisant mais le flux est le même. –

1

Beaucoup des tutoriels que vous recherchez sont très à l'extérieur de ce jour. L'API Facebook et les SDK qui l'accompagnent changent assez rapidement, et bien que cela ne signifie pas qu'il n'est pas possible de faire les choses de la «vieille» façon, ils sont plus susceptibles d'être brisés, dépréciés, supprimés ou moins bien documentés.

Pour une meilleure mise à niveau try de soutien au dernier SDK PHP: https://github.com/facebook/php-sdk/

Ensuite, vous pouvez utiliser cet exemple comme base pour ce que vous essayez de faire: https://github.com/facebook/php-sdk/blob/master/examples/example.php

Il présente à l'utilisateur une lien de connexion, mais si vous êtes dans un contexte où vous voulez forcer la connexion, l'affichage du contenu uniquement aux utilisateurs connectés (vieux require_login) imitant, vous pouvez remplacer:

// Login or logout url will be needed depending on current user state. 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 

esprit h:

// Get logout URL, or redirect user to login URL 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    header('Location: ' . $facebook->getLoginUrl()) ; 
} 
Questions connexes