Comment accéder à l'identifiant utilisateur Facebook à partir de javascript dans un fb:iframe ?

StackOverflow https://stackoverflow.com/questions/1061624

Question

J'écris une application Facebook qui est un simple jeu de société que j'ai implémenté en javascript.Facebook semble uniquement permettre aux applications javascript de s'exécuter dans une iframe, je charge donc la page en utilisant <fb:iframe>.Je veux juste pouvoir indiquer au javascript l'identifiant de l'utilisateur afin de pouvoir dire à l'utilisateur si c'est son tour ou non, mais je ne trouve pas de documentation sur l'accès aux données Facebook à partir de fb:iframe.Il me manque probablement un concept de base car je ne comprends pas très bien l'API Facebook.

Était-ce utile?

La solution

API de Facebook est très difficile à suivre, et la documentation est très pauvre. Vous avez raison sur le Javascript ... Javascript normale ne fonctionne que dans un iframe sur Facebook, sinon vous êtes limité à un sous-ensemble de filtre Javascript appelé FBJS. Vous pouvez ignorer en toute sécurité rien FBJS dans la documentation, et se concentrer sur les iframes.

Iframe chargement

La première chose que je voudrais mentionner est qu'une balise se fait rendu <fb:iframe> avec une tonne de choses dans l'attribut src. Donc, si vous mettez un tag comme ceci dans votre page Facebook: <fb:iframe src="http://example.com/page?x=y">, ce qu'il finit par devenir quand il se charge dans le navigateur d'un utilisateur est plus comme ceci:

<iframe src="http://example.com/page?x=y&fb_sig_in_iframe=1&fb_sig_locale=en_US&fb_sig_in_new_facebook=1&fb_sig_time=1246340245.3338&fb_sig_added=1&fb_sig_profile_update_time=1242155811&fb_sig_expires=1246345200&fb_sig_user=000000001&fb_sig_session_key=2.d13uVGvWVL4hVAXELgxkZw__.3600.1246345200-000000001&fb_sig_ss=mZtFjaexyuyQdGnUz1zhYTA__&fb_sig_api_key=46899e6f07cef023b7fda4fg2e21bc58&fb_sig_app_id=22209322289&fb_sig=bbc165ebc699b12345678960fd043033">

Facebook ajoute une tonne de choses à src. Le paramètre qui vous indique l'identifiant de l'utilisateur Facebook est fb_sig_user (qui est 000.000.001 ici). Je suppose que votre application est configuré comme une « application FBML », puisque vous auriez probablement pas utiliser une balise dans une users.getLoggedInUser() « app Iframe ». Néanmoins, la méthode de rendu est similaire dans les deux cas, et vous obtenez un tas de choses supplémentaires à votre <=> document dans une « application Iframe » aussi bien.

Ce vraiment que vous passe l'ID utilisateur Facebook sur la première charge de l'iframe, cependant. Les opérations ultérieures au sein de l'iframe n'auront pas accès à ce nom d'utilisateur, sauf si vous passez explicitement autour.

Facebook Connect

Si vous voulez interagir avec Facebook à partir du iframe, c'est là le Facebook Connect bibliothèques Javascript se décline en Les meilleures instructions sur la configuration Facebook Connect est probablement cette page wiki , mais il est encore un peu trouble. Facebook Connect peut être utilisé pour les deux sites complètement externes, ou tout contenu régulier à l'intérieur d'un iframe. Vous tombez dans cette dernière catégorie, donc si vous suivez les instructions de ce lien et utilisez la première ligne de code à l'étape 2 (pour le FeatureLoader), vous devriez être ok.

Une fois que vous avez inclus le script FeatureLoader.js et appelé FB.init, vous devez généralement être opérationnel avec FB Connect. Vous devriez être en mesure d'interagir avec le API à partir de là dehors. La méthode vous donnera <=> l'identifiant de l'utilisateur courant à l'intérieur du iframe via Javascript.

L'espoir qui aide.

Autres conseils

Notez qu'à partir de mars 2011, FB passe aux requêtes POST pour charger les iframes.Il envoie une action de formulaire avec method="post" et target="iframe_canvas", plus un type d'entrée="hidden" avec un "signed_request"

Vous cna utiliser l'API facebook pour obtenir l'ID utilisateur en appelant

Users.getLoggedInUser

Vous pouvez accéder à cette valeur, utilisez echo () pour ajouter à votre HTML comme une variable javascript, ce qui rendra disponible à votre code Javascript.

Essayez Env.user, il a ouvert la session dans l'ID de l'utilisateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top