Frage

Ich schreibe eine Facebook-Anwendung, die ein einfaches Brettspiel ist, das ich in JavaScript implementiert habe. Facebook scheint nur JavaScript-Anwendungen innerhalb eines Iframe laufen zu lassen, so bin ich lade die Seite mit <fb:iframe>. Ich möchte nur in der Lage sein, die den Benutzer Javascript-ID zu sagen, so kann ich den Benutzer sagen, wenn er an der Reihe ist oder nicht, aber ich kann die Dokumentation nicht Facebook Daten über den Zugriff von innerhalb der fb finden: iframe. Ich bin wahrscheinlich einige grundlegende conecpt fehlt, wie ich die Facebook-API nicht sehr gut verstehen.

War es hilfreich?

Lösung

Facebook-API ist sehr schwer zu folgen, und die Dokumentation ist sehr schlecht. Sie haben Recht über die Javascript ... normal Javascript funktioniert nur in einem Iframe auf Facebook, sonst sind Sie zu einer Untergruppe von gefilterten Javascript beschränkt genannt FBJS. Sie können sicher etwas über FBJS in der Dokumentation ignorieren, und konzentrieren sich auf iframes.

Iframe Laden

Das erste, was ich noch erwähnen möchte ist, dass ein <fb:iframe> Tag wird tatsächlich mit einer Tonne Material im src Attribute gerendert. Also, wenn Sie setzen ein Tag wie diese in Ihre Facebook-Seite: <fb:iframe src="http://example.com/page?x=y">, was es immer endet, wenn es in den Browser eines Benutzers lädt ist wie folgt:

<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 fügt eine Tonne Material zum src. Der Parameter, der den Benutzer Facebook-ID erzählt ist fb_sig_user (das ist 000000001 hier). Ich gehe davon aus Ihrer App wird als „FBML App“ einrichten, da Sie wahrscheinlich nicht einen <fb:iframe> Tag in einem „Iframe app“ verwenden würden. Dennoch ist die Rendering-Methode in beiden Fällen ähnlich, und Sie erhalten eine Reihe von Extramaterial zu Ihrem src Dokument in einem „Iframe App“ als auch.

Das ist wirklich nur passiert Sie die Facebook-Benutzer-ID auf der ersten Belastung des iframe, aber. Nachfolgende Operationen innerhalb des iframe werden keinen Zugriff auf die Benutzer-ID, wenn Sie es explizit übergeben um.

Facebook Connect

Wenn Sie mit Facebook interagieren wollen innerhalb des iframe, das ist, wo die Facebook Connect Javascript-Bibliotheken kommen die besten Anleitungen zum Einrichten Facebook Connect ist wahrscheinlich diese Wiki-Seite , aber es ist immer noch ein bisschen trübe. Facebook Connect kann sowohl vollständig externe Webseiten, oder einfach nur regelmäßigen Inhalt innerhalb eines Iframes verwendet werden. Sie fallen in die letztere Kategorie, also wenn Sie die Anweisungen in diesem Link und verwenden Sie die erste Zeile des Codes in Schritt 2 (für die FeatureLoader) folgen, sollten Sie in Ordnung sein.

Wenn Sie das FeatureLoader.js Skript und rief FB.init enthalten haben, sollten Sie in der Regel mit FB Connect und ausgeführt werden. Sie sollten mit dem API von da an aus. Die users.getLoggedInUser() Methode geben Sie den aktuellen Benutzer-ID innerhalb des iframe über Javascript.

Ich hoffe, das hilft.

Andere Tipps

Beachten Sie, dass ab März 2011 FB POST-Anfragen bewegt iframes zu laden. Er sendet eine Form Aktion mit method = "post" und target = "iframe_canvas", zuzüglich einer input type = "hidden" mit einem "signed_request"

Sie CNA den Facebook-API verwenden, um den Benutzer-ID zu erhalten, indem Aufruf

Users.getLoggedInUser

Sie können diesen Wert zugreifen, dann verwendet echo (), die zu Ihrem HTML als JavaScript-Variable hinzuzufügen, die es zu einem Javascript-Code zur Verfügung stellen werden.

Versuchen Env.user, hat es die in Benutzer-ID angemeldet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top