Facebook C # SDK, AJAX dans l’application iFrame

Je suis en train de créer une application iFrame pour Facebook en utilisant le SDK Facebook C #. Je sais que l’utilisateur s’authentifie et je peux obtenir son nom d’utilisateur à l’aide de l’API graphique (FaceBookApp.Api (“/ userid”))

Le problème est que lorsque je passe un appel AJAX vers une page, je ne peux plus utiliser l’API. L’identifiant est 0. Lors de l’ouverture de FireBug, la réponse de la demande est “Demande get non prise en charge”. Je soupçonne que cela a quelque chose à voir avec le fait que la demande AJAX utilise une session différente pour l’appel et que cette session n’est pas authentifiée. Je me demandais s’il y avait un moyen de contourner cela? Je savais que je pouvais faire la page que je demande de ré-authentifier, mais cela signifierait que je devrais réauthentifier chaque demande qui ne semble pas efficace. J’utilise Jquery pour faire la demande.

Toute aide est très appréciée.

Merci

Le problème est qu’avec un appel ajax dans une iframe, vous devez envoyer les informations de session du client au serveur. Sinon, FacebookApp n’a aucun moyen de savoir qui est l’utilisateur actuel. Vous pouvez résoudre ce problème de deux manières.

  1. Vous pouvez envoyer la valeur entière de signed_request au serveur.
  2. Vous pouvez utiliser le SDK Javascript pour obtenir le jeton d’access des utilisateurs et envoyer cette valeur uniquement au serveur.

Je pense que le premier moyen est le meilleur. Tout ce que vous avez à faire est de changer votre URL ajax pour inclure la demande signée comme ceci:

var ajaxUrl = ‘/services/example?signed_request=<%=Request.Querystring["signed_request "]%>‘;

Ensuite, faites votre appel comme d’habitude avec la nouvelle URL. Après cela, la classe FacebookApp lira la session à partir de la requête ajax et vous serez prêt à partir.