Pregunta

Estoy llamando a com.facebook.graph.facebook.init (app_id, loginhandler);

para iniciar sesión en Facebook usando la API de ActionScript (como se explica en este tutorial: http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt4.html).Pero no parece hacer nada.

Mirando la fuente de la API, la única llamada que se realiza a JS es externalInterface.call ('fbas.init', json.encode (opciones));

Las dos bibliotecas de JavaScript necesarias son:

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

Sin embargo, no puedo encontrar ninguna referencia a FBAS en estas bibliotecas.¿Estoy usando siquiera las bibliotecas correctas?¿Hay otra razón por la que FBAS no existe?¿O incluso por qué llamar a Facebook.init() no hace nada?

¿Fue útil?

Solución

FBJSBridge.js se ha incrustado en el SDK. Vistazo a com.facebook.graph.core.FacebookJSBridge.as, y verá que todo el bloque de javascript que era FBJSBridge.js está encima del ExternalInterface en el constructor com.facebook.graph.Facebook.as 's.

he estado luchando con esto todo el día. He estado viendo el HTTP GET generado por Facebook.init (), y parece que sólo espera hasta que el tiempo de espera, en cuyo punto se genera otra GET. Nunca regresa normalmente. Probé la APPID, la apikey allí y todo tipo de combinaciones de parámetros, pero nunca lo vi volver. Tengo que concluir que la forma de su significado para el trabajo. Si no, entonces eso es lo que hace el trabajo. : - /

De todos modos, verá el interior FBAS en ese bloque JS en FacebookJSBridge.as que init se suscribe al evento "auth.sessionChange" que desencadena Facebook.handleSessionChange (). Se puede ver que es donde su devolución de llamada. El truco es que esto es lo que se llama en cualquier momento los sessionChanges. Así que incluso si la próxima vez que se desencadena el evento no se debe a una respuesta de FB.init (), su devolución de llamada todavía se llamará en ese punto.

Si define su propio controlador para "auth.sessionChange" antes de llamar Facebook.init (), y se establece "cookie" para cierto entonces después de una cookie ha sido creado obtendrá un evento sessionChange disparar inmediatamente después llamar a init. devolución de llamada de init todavía no consigue llamado, porque aunque el GET no obtiene una respuesta.

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

Los ejemplos que encontrará en ese tutorial puede funcionar, pero no son lo que usted desea utilizar al tener que poner una aplicación en conjunto. De lo contrario, siempre se va a hacer clic en un botón para fbconnect gatillo. Parece que OAuth2 será la manera de obtener el comportamiento deseado de no tener que hacer clic en un botón cada vez que "conectar". Usted puede obtener el SessionKey de OAuth2 y luego usar el Facebook GRAPHSDK Flash / o JS dependiendo de lo que sea más conveniente para lo que está tratando de hacer.

Esta ayuda puede: http: //blog.yoz. sk / 2010/05 / facebook-gráfico-api-y-oauth-2-y-flash /

Otros consejos

Parece que hay varias razones por las que esto no funciona. Ver estos enlaces:

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

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

Para mí fue que el orden de las etiquetas de script es un error en el archivo de envoltura que el tutorial de Adobe ofrece.

Asegúrese de que la biblioteca de Facebook JS se añade antes swfobject. Es decir. asegurarse de que sus etiquetas de script son en este orden:

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

Reemplazar

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"});  

es decir. swfobject. embedSwf

Trabajó como un encanto!

En mi caso fue el index.template.html el que no funcionó.Lo necesitaba:1) una referencia al SDK de FB JS
2) use fb-root div como primera entrada dentro de la etiqueta del cuerpo

eso resolvió mi problema.

Editar:Me confundió que Facebook.init() solo funciona cuando un usuario inicia sesión.Para autenticación llamo Facebook.login

Editar2:Revisado esta cosa...Esta vez me perdí que la URL del lienzo debe apuntar a su página; si no, por supuesto, la llamada va a otra página y nunca recibe una respuesta.Obvio, pero me golpeó de nuevo...

Parece que FBAS.getSwf() está utilizando el Nombre de la SWF en su llamada a document.getElementById.

Por lo tanto, si se especifica un identificador pero no un nombre, apariencia Javascript a continuación de FacebookJSBridge.as un elemento con el id de null.

O, si se especifica un nombre, pero no un id, entonces existe miradas JavaScript de FacebookJSBridge.as para la cadena apropiada, sino un elemento con tal identificación.

Si especifica un nombre y una identificación idéntica, los que en realidad se puede encontrar el archivo 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 });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top