Domanda

sto chiamando     com.facebook.graph.Facebook.init (APP_ID, loginHandler);

per accedere a Facebook utilizzando l'API ActionScript (come spiegato in questo tutorial: http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt4.html ). Ma, non sembra di fare nulla.

Guardando il sorgente di API, l'unica chiamata che è fatto per JS è     ExternalInterface.call ( 'FBAS.init', JSON.encode (opzioni));

I due librerie javascript che sono richiesti sono:

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

Tuttavia, non riesco a trovare alcun riferimento a FBAS in queste librerie. Sto anche utilizzando le librerie corrette? C'è un'altra ragione per cui ho perso il motivo per cui FBAS doesnt esiste? o anche perché chiamando Facebook.init () non fa nulla?

È stato utile?

Soluzione

FBJSBridge.js è stato incorporato nel SDK. Guardate com.facebook.graph.core.FacebookJSBridge.as, e vedrete che l'intero blocco di javascript che era FBJSBridge.js è virato sul ExternalInterface nel costruttore com.facebook.graph.Facebook.as s'.

Sono stato alle prese con questo tutto il giorno. Ho osservato il HTTP GET generato da Facebook.init (), e sembra che aspetta solo fino a quando il tempo è scaduto, a quel punto un altro ottiene è generato. E non torna più normalmente. Ho provato l'APPID, l'apikey in là e tutti i tipi di combinazioni di parametri, ma non ho mai visto tornare. Devo concludere che è come il suo significato per il lavoro. Se no, allora è così che funziona. : - /

In ogni caso, si vedrà all'interno FBAS in quel blocco JS in FacebookJSBridge.as init sottoscrive alla manifestazione "auth.sessionChange" che innesca Facebook.handleSessionChange (). Si può vedere che è dove il callback viene chiamato. Il trucco è che questo è ciò che viene chiamato in qualsiasi momento i sessionChanges. Quindi, anche se la prossima volta che gli incendi di evento non è a causa di una risposta da parte FB.init (), il callback sarà ancora ottenere chiamato a quel punto.

Se si imposta il proprio gestore per "auth.sessionChange" prima di chiamare Facebook.init (), e si imposta "cookie" per vero, allora dopo un cookie è stato creato si otterrà un evento sessionChange sparare subito dopo aver chiamare init. callback di Init ancora non viene chiamato, però, perché il GET non ottiene mai una risposta.

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

Gli esempi che troverete in questo esercitazione può funzionare, ma non sono quello che si desidera utilizzare quando in realtà mettendo insieme un app. In caso contrario, si sta andando sempre a fare clic su un pulsante per attivazione fbconnect. Sembra OAuth2 sarà il modo per ottenere il comportamento desiderato di non aver bisogno di cliccare su un pulsante ogni volta su "Connect". È possibile ottenere la SessionKey da OAuth2 e quindi utilizzare il Facebook GRAPHSDK Flash / o JS a seconda di seconda di quale sia più conveniente per ciò che si sta cercando di fare.

Questo potrebbe aiutare: http: //blog.yoz. sk / 2010/05 / facebook-grafico-api-e-OAuth-2-e-flash /

Altri suggerimenti

Ci sembrano essere diverse ragioni per cui questo non riesce. Vedi questi link:

http://code.google.com/ p / facebook-actionscript-api / temi / dettaglio? id = 165

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

Per me è stata che l'ordine dei tag di script e 'corretto nel file wrapper che il tutorial di Adobe fornisce.

Assicurarsi che la libreria Facebook JS è aggiunto prima SWFObject. Cioè garantire i tag di script sono in questo ordine:

<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>

Sostituire

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

con

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

vale a dire. SWFObject. embedSwf

Ha lavorato come un fascino!

Nel mio caso è stato l'index.template.html che non ha funzionato. Avevo bisogno: 1) un riferimento alla
FB JS SDK 2) div uso fb-root come prima voce all'interno del tag body

che ha risolto il mio problema.

Modifica:. Ero confusa che Facebook.init () funziona solo quando un utente è connesso in Per l'autenticazione che io chiamo Facebook.login

Edit2: Revisited questa cosa ... Questa volta ho perso che le esigenze tela url per puntare alla tua pagina, se non, naturalmente, la chiamata passa a un'altra pagina e non avete mai ricevuto una risposta. Ovvio, ma mi ha colpito ancora una volta ......

Sembra che FBAS.getSwf() sta usando il nome del file SWF nella sua chiamata al document.getElementById.

Quindi, se si specifica un id, ma non un nome, sguardi javascript poi di FacebookJSBridge.as per un elemento con l'id di null.

In alternativa, se si specifica un nome ma non un id, poi guarda Javascript del FacebookJSBridge.as per la stringa appropriata, ma un elemento con tale ID.

Se si specifica un nome e un ID identico, allora può effettivamente trovare il file SWF.


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 });
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top