2009-01-27 13 views
3

Je travaille sur une application facebook et il y a quelque chose que je ne comprends pas sur le fonctionnement de leur système d'autorisation.Problème d'autorisation Facebook

Notre configuration de base est cette URL toile

= domain.com/facebook~~V~~singular~~3rd

Ceci est une page simple avec un élément FBML Iframe qui pointe vers domain.com/facebook/app qui est une page HTML qui sert une application Flash. L'application Flash demande des données supplémentaires à notre serveur d'applications - certaines de ces demandes demandent des données Facebook (telles qu'une liste d'ID d'ami). Alors Flash envoie une requête à domain.com/resources/facebook/friends - il s'agit d'une page PHP qui crée une instance Facebook (leur bibliothèque PHP) et effectue l'appel nécessaire à leur API et renvoie les données.

Cependant, la demande à cette URL (par flash) ne valide pas, il est alors redirigé vers leur connexion quand puis se réoriente en arrière mon URL de toile avec deux paramètres - auth_token et suivant. La requête est donc valide, mais la redirection interrompt l'appel flash. Donc, j'essaie de comprendre comment faire ces autres appels d'API (quand eux-mêmes mace facebook API appels) être facebook-vaildated dès le départ.

Répondre

1

Ok, je l'ai compris.

Comme il se trouve, Flash suit déjà les réoriente - tout ce que je devais faire était de détecter (à l'adresse de la toile) quand il y avait une demande d'autorisation (signalisé par la présence de auth_token et suivant) et incluez le auth_token en tant que paramètre GET lorsque je redirige vers l'URL suivante (en principe, transférez le auth_token à la requête d'origine). Donc, contrairement à ce que j'ai dit plus haut, la redirection n'a PAS interrompu l'appel flash - il n'y avait tout simplement pas assez de données pour être une demande valide.

1

Résoudre en plaçant le code suivant à la place de la ligne "require_login()"

if (isset($_GET['auth_token'])) { 
$sess_data=$facebook->api_client->call_method('auth.getSession',array('auth_token'=>$_GET['auth_token'])); 
$facebook->set_user($sess_data['uid'],$sess_data['session_key'],$sess_data['expires']); 
$user=$sess_data['uid']; 
} 
if (!$sess_data) { 
$user=$facebook->require_login(); 
}