Frage

Ich rufe     com.facebook.graph.Facebook.init (APP_ID, loginHandler);

für die Anmeldung bei Facebook dem Actionscript-API (wie in diesem Tutorial erklärt: http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt4.html ). Aber, scheint es nicht, etwas zu tun.

an der API-Quelle sucht, der einzigen Anruf, der gemacht wird, um JS ist     ExternalInterface.call ( 'FBAS.init', JSON.encode (Optionen));

Die beiden Javascript-Bibliotheken, die benötigt werden, sind:

http://connect.facebook.net/en_US/all.js
FBJSBridge.js

Allerdings kann ich keinen Hinweis auf FBAS in diesen Bibliotheken finden. Verwende ich auch die richtigen Bibliotheken? Gibt es einen anderen Grund, warum ich verpasst haben, warum FBAS tut exist? oder auch, warum Aufruf Facebook.init () tut nichts?

War es hilfreich?

Lösung

FBJSBridge.js wurde im SDK eingebettet. Schauen Sie sich com.facebook.graph.core.FacebookJSBridge.as, und Sie werden sehen, dass der gesamte Block von Javascript, die FBJSBridge.js war auf die ExternalInterface in com.facebook.graph.Facebook.as ‚s Konstruktor geheftet.

Ich habe den ganzen Tag mit diesem zu kämpfen. Ich habe gerade die http-GET-gelaicht von Facebook.init (), und es sieht aus wie es nur wartet, bis es mal aus, bei denen einem anderen GET Punkt hervorgebracht wird. Es kommt nie normalerweise zurück. Ich versuchte, die APPID, die APIKEY da drin und alle Arten von Kombinationen von Parametern, aber ich sah es nie wieder kommen. Ich muss, dass der Schluss, wie seine auf Arbeit bedeutete. Wenn nicht, dann ist das, wie es funktioniert. : - /

Wie auch immer, werden Sie innerhalb FBAS in diesem JS Block in FacebookJSBridge.as sehen, die abonnierten zum "auth.sessionChange" Ereignis init die Facebook.handleSessionChange () auslöst. Wie Sie sehen, ist, wo Ihr Rückruf aufgerufen wird. Der Trick besteht darin, dass das ist, was jederzeit die sessionChanges aufgerufen wird. Also selbst wenn das nächste Mal, dass Ereignis ausgelöst wird nicht wegen einer Antwort von FB.init () Ihr Rückruf wird noch an diesem Punkt aufgerufen.

Wenn Sie Ihren eigenen Handler für „auth.sessionChange“ einstellen, bevor Sie Facebook.init () aufrufen, und Sie „Cookie“ auf true dann, nachdem ein Cookie erstellt wurde, können Sie eine sessionChange Veranstaltung direkt nach dem Brennen erhalten werden rufen init. Init Rückruf immer noch nicht, obwohl aufgerufen, weil die GET wird nie eine Antwort.

Facebook.addJSEventListener("auth.sessionChange", onSessionChange);
Facebook.init(_appID, onInitFacebookConnect, 
      {cookie: true, 
       appId: _appID, 
       perms: "user_birthday,read_stream,publish_stream"});

Die Beispiele, dass Sie in diesem Tutorial arbeiten kann finden, aber nicht, was Sie verwenden möchten, wenn tatsächlich eine App zusammen setzen. Sonst werden Sie immer einen Knopf Trigger fbconnect klicken. Es sieht aus wie oauth2 der Weg sein wird, zu erhalten, um das gewünschte Verhalten nicht auf einer Taste jedes Mal auf „Verbinden“ zu klicken. Sie können die SessionKey von oauth2 und dann die Flash / Facebook GRAPHSDK oder JS verwenden je nach welcher auch immer am bequemsten ist für das, was Sie zu tun versuchen.

Dies könnte helfen: http: //blog.yoz. sk / 2010/05 / facebook-graph-api-and-oauth-2-and-flash /

Andere Tipps

Es scheint mehr Gründe, warum dies nicht gelingt. Sehen Sie diese Links:

http://code.google.com/ p / facebook-Actionscript-api / Themen / detail? id = 165

http://www.pastrytech.com/willy/FacebookActionScript3SDKExample.html

Für mich war es, dass die Reihenfolge der Script-Tags in der Wrapper-Datei falsch ist, dass die Adobe-Tutorial zur Verfügung stellen.

Stellen Sie sicher, dass die Facebook-JS-Bibliothek VOR swfobject hinzugefügt wird. D. h sicherzustellen, dass Ihr Script-Tags sind in dieser Reihenfolge:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>

Ersetzen

embedSWF("MyApp.swf", "flashContent", "640", "480", "9.0", null, null, null, {name:"flashContent"});    

mit

swfobject.embedSWF("MyApp.swf", "flashContent", "640", "480", "9.0", null, null, null, {name:"flashContent"});  

d. swfobject. embedSwf

Arbeitete wie ein Charme!

In meinem Fall war es die index.template.html, die nicht funktionierten. Ich brauchte: 1) ein Verweis auf die FB JS SDK
2) Verwendung fb-root div als erster Eintrag in dem Body-Tag

, dass mein Problem gelöst.

Edit:. Ich war verwirrt, dass Facebook.init () funktioniert nur, wenn ein Benutzer angemeldet ist für die Authentifizierung nenne ich Facebook.login

Edit2: dieses Ding Revisited ... Dieses Mal habe ich, dass die Leinwand URL muss verpasst zu Ihrer Seite zurückweisen, wenn nicht natürlich der Anruf zu einer anderen Seite und Sie nie eine Antwort erhalten. Offensichtliche, aber es traf mich wieder ......

Es scheint, dass FBAS.getSwf() wird mit dem name der swf in seinem Aufruf an document.getElementById.

Wenn Sie also eine ID angeben, aber keinen Namen, dann FacebookJSBridge.as Script sieht für ein Element mit der ID von null.

Oder, wenn Sie einen Namen angeben, aber nicht eine ID, dann FacebookJSBridge.as Script sieht für die entsprechende Zeichenfolge, aber ein Element, ohne eine solche ID vorhanden ist.

Wenn Sie einen Namen und eine identische ID angeben, dann kann es tatsächlich die swf finden.


var appId = "1234567890";

var swfNameAndId = "app_" + appId;

swfobject.embedSWF("/swfs/TestApp.swf", "app_placeholder", 760, 450, "9.0.0", false, { "appId": appId }, { "allowscriptaccess": "always" }, { "name": swfNameAndId, "id": swfNameAndId });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top