2 Stimmen

Wie benutze ich FB.Connect.streamPublish in einer iframe Facebook-App?

Ich erstelle eine einfache iframe-basierte Facebook-App. Ich habe den folgenden Code, um mein iframe zu dimensionieren:

FB_RequireFeatures(["Connect"], function(){
  FB.XdComm.Server.init('/xd_receiver.htm');
  FB.CanvasClient.startTimerToSizeToContent();
  FB.CanvasClient.syncUrl();
});

Ich möchte einen Link hinzufügen, der ein Popup anzeigt, das es dem Benutzer ermöglicht, ein von der App definiertes Bild/Link an die Pinnwand des Benutzers zu posten. Um die Dinge zunächst zum Laufen zu bringen, habe ich versucht, einfach den folgenden Code bei einem Klickereignis zu verwenden:

FB.Connect.streamPublish('');

Aber es passiert nichts. Ich habe versucht, hinzuzufügen:

FB.init(, '/xd_receiver.htm');

sowohl innerhalb der FB_RequireFeatures-Funktion, davor, danach... kein Glück. Nichts passiert. Es werden keine Fehler gemeldet. Nichts. Irgendwelche Ideen?

0 Stimmen

Nur ein Tipp: Wenn Sie zum ersten Mal eine einfache App erstellen möchten, ist es viel einfacher, eine FBML-App anstelle einer iFrame-App zu erstellen.

1voto

Michael Punkte 46

Überprüfen Sie diese Seite für vollständige Anweisungen zur Einrichtung der Stream-Veröffentlichung mit iFrame-Apps unter Verwendung von Connect:

http://thetechnicalexperience.blogspot.com/2010/02/how-to-use-fbconnectstreampublish.html

0voto

Cyphus Punkte 849

Überprüfen Sie, ob Sie: (einige von http://wiki.developers.facebook.com/index.php/Connect/Setting_Up_Your_Site#Referencing_Facebook_Connect_on_Your_Site)

  • xd_receiver.htm erstellt haben und dass es im Stammverzeichnis Ihrer Domain liegt
  • Den FeatureLoader.js.php am Anfang des BODY Ihres Dokuments eingefügt haben
  • Das Javascript in der Frage (z. B. FB_RequiresFeatures usw.) am Ende Ihres Dokuments hinzugefügt haben

Ein Beispielcode, der derzeit in meiner App einwandfrei funktioniert:

   window.onload = function() {
        FB_RequireFeatures(["XFBML", "Connect"], function() {
           FB.Facebook.init("...mein API-Schlüssel...","xd_receiver.htm");
           FB.CanvasClient.syncUrl();
        });
   };

Sie können den "XFBML" aus dem FB_RequireFeatures-Aufruf weglassen und auch den Pfad zu xd_receiver.htm ändern, und es sollte funktionieren.

Zusätzlich sollten Sie überprüfen, ob die Connect-URL der Anwendung (wie im Developer-App in Facebook eingerichtet) auf ein übergeordnetes Verzeichnis der xd_receiver.htm-Datei verweist. Wenn Ihre App auf http://www.mydomain.com gehostet ist, wird Ihre xd_receiver.htm-Datei gemäß Ihren Codebeispielen unter http://www.mydomain.com/xd_receiver.htm liegen, und Sie möchten http://www.mydomain.com als Connect-URL haben.

Wenn dies immer noch nicht funktioniert, versuchen Sie, Firebug (oder ein ähnliches Tool) zu installieren, um den Netzwerkverkehr zu überprüfen. Als ich damit gearbeitet habe, ist die Facebook-Javascript-API still gescheitert, und erst durch Inspektion der Anfragen hin und her habe ich festgestellt, dass Facebook meine Connect-URL nicht mochte.

Um zu testen, ob alles funktioniert, wäre ich versucht,

FB.Connect.streamPublish();

anstatt der von Ihnen geposteten Zeile zu verwenden, da es einen Dialogfeld öffnen sollte und klar als funktionierendes Beispiel angegeben ist. Ich bin mir nicht sicher, was passieren wird, wenn Sie einfach einen leeren String als Argument übergeben.

Schließlich gibt es viele IFrame-basierte Facebook-Apps da draußen - wenn Sie eine sehen, die etwas macht, das Ihnen gefällt, können Sie immer deren Javascript-Code überprüfen, um herauszufinden, wie sie es erreicht haben. Mit anderen Worten, Facebook ist voller Beispielcode für IFrame-Apps.

0 Stimmen

Ich füge 'xd_receiver.htm' bei Bedarf hinzu. Ich habe keine Connect-URL festgelegt, denn wenn ich sie festlege, lädt sie jedes Mal, wenn ich zur App gehe, die tatsächliche URL in einem neuen Fenster statt in Canvas innerhalb von Facebook. Ich habe Firebug installiert... Ich habe versucht, console.log(FB.Connect.streamPublish()); zu machen und es druckt 'true' aus. Ich habe sowohl ('') als auch () versucht, und ich habe beide Beispiele im Dev-Wiki gesehen... kein Erfolg für beide. Ich habe mir die Antworten in Firebug angesehen und es gefällt ihm nicht meine Connect-URL (weil keine festgelegt ist). Aber wenn ich eine setze, führt mich der Besuch der App weg.

0 Stimmen

Sie können den FB JavaScript-Client nicht verwenden, ohne eine Connect-URL festzulegen. Funktioniert streamPublish, wenn das neue Fenster erscheint? Wenn ja, müssen Sie nur das Problem mit dem 'neuen Fenster' beheben und alles wird wie erforderlich funktionieren. Wenn ich mir anschaue, was Sie in Ihrer Frage eingeschlossen haben, glaube ich nicht, dass wir genug haben, um herauszufinden, warum ein neues Fenster erscheint. Welchen Browser verwenden Sie? Könnten Sie mehr vom zurückgegebenen HTML bereitstellen oder haben Sie eine URL, die wir besuchen können, um zu sehen, wie die App läuft?

0 Stimmen

Was ich meine ist, dass, wenn ich eine Verbindungs-URL festlege, das Öffnen der App dazu führt, dass Facebook die Verbindungs-URL lädt (die mit der URL meiner App übereinstimmt) anstatt die Daten im iframe innerhalb des Facebook Canvas zu laden.

0voto

michael Punkte 1

Sie müssen Ihre Verbindungs-URL festlegen, um die JavaScript-Bibliotheken zu verwenden. Versuchen Sie, Ihre Lesezeichen-URL auf http://apps.facebook.com/yourapp festzulegen und sehen Sie, ob das hilft.

0voto

Banderon Punkte 1

@Cyphus

Ja, wenn ich von "zur App gehen" spreche, meine ich, dass ich auf die Seite der App auf Facebook (apps.facebook.com/myapp) gehe. Derzeit ist meine Callback-URL nur für den Canvas festgelegt. Sobald ich versucht habe, meine Callback-URL sowohl für den Canvas ALS AUCH die Connect-URL zu verwenden, wurde ich jedes Mal, wenn ich zur App gehen wollte, anstelle des Ladens in einem iFrame innerhalb von Facebook auf die tatsächliche Callback-URL umgeleitet. Ich fordere sie nicht direkt von meinem Server ab, da das den Zweck einer Facebook-App teilweise zunichte macht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X