Ceci est parce que Facebook perd toutes les variables d'authentification et est incapable de déterminer que les requêtes simultanées appartiennent à la même session, qui se traduit par « sortir » de l'iframe et finissant sur vos propres pages de serveur au lieu de dans Facebook.
Chaque fois qu'une page est diffusée via Facebook, la requête reçue sur votre serveur comprend un certain nombre de variables GET envoyées par Facebook, ces variables sont collectivement appelées "Signature d'authentification Facebook" qui prouve à votre serveur que la requête est valide et provient de Facebook; De même, lorsque votre serveur envoie la réponse, l'inclusion de ces variables prouve à Facebook (par une combinaison de session_key, api_key et sig digest) que votre serveur est l'application qu'il prétend être. Afin de maintenir la session dans votre application iframe sans éclater vers votre serveur, vous devez inclure ces paramètres dans la chaîne de requête de chaque lien. Voici une fonction simple qui produira la chaîne de requête pour vous, il vous suffit donc d'ajouter le résultat de cette fonction à chaque URL de lien dans votre application:
function fb_sig_urlQueryString() {
$query = '';
foreach ($_GET as $k => $v) {
if (strpos($k, 'fb_sig') === 0) {
if ($i++ > 1) $query .= '&';
$query .= $k.'='.$v;
}
}
return $query;
}
ba-bump! bosse bosse – mcintyre321