2010-11-01 7 views
1

Je suis en train de modifier une application de canevas FBML pour utiliser le nouveau SDK PHP et l'authentification à la place de l'ancienne API REST.FBML Canvas Application Authentication

En ce moment je suis d'essayer d'utiliser cet extrait:

$me = null; 
// Session based API call. 
if ($session) { 
    try { 
    $uid = $facebook->getUser(); 
    $me = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    } 
} 
// login or logout url will be needed depending on current user state. 
if ($me) { 
} else { 
    $loginUrl = $facebook->getLoginUrl(array('req_perms' => 'user_birthday, publish_stream, email')); 
    header('Location: '.$loginUrl); 
} 

Cependant, si j'utilise la fonction d'en-tête de php pour toutes les URL qui n'est pas relative, je reçois cette erreur:

Application Temporarily Unavailable 
The URL [https://www.facebook.com/login.php?.........] is not valid. 

Sorry, the application you were using is experiencing a problem. Please try again later. 

Si j'ai besoin d'une authentification sur mon application de canevas FBML à l'aide du dernier SDK PHP, comment puis-je rediriger correctement vers la page de connexion de l'application qui demande les autorisations étendues?

Répondre

0

On dirait que vous ne pouvez pas utiliser une redirection côté serveur (header()) pour pousser l'utilisateur vers la page d'authentification. J'utilise ceci pour le moment:

function redirect($url) 
{ 
    echo '<script>top.location="' . $url . '";</script>'; 
    //echo '<fb:redirect url="' . $url . '"></fb:redirect>'; 
    //header("location:$url"); 
    exit(); 
}