Question

Je fais appel     com.facebook.graph.Facebook.init (APP_ID, loginHandler);

pour se connecter à Facebook en utilisant l'actionscript api (comme expliqué dans ce tutoriel: http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt4.html ). Mais, il ne semble pas faire quoi que ce soit.

En regardant la source de l'API, le seul appel qui est fait à JS est     ExternalInterface.call ( 'FBAS.init', JSON.encode (options));

Les deux bibliothèques javascript qui sont nécessaires sont:

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

Cependant, je ne peux trouver aucune référence à FBAS dans ces bibliothèques. Suis-je même en utilisant les bibliothèques correctes? Y at-il une autre raison pour laquelle je l'ai manqué à pourquoi FBAS ne marche pas exister? ou même pourquoi appeler Facebook.init () ne fait rien?

Était-ce utile?

La solution

FBJSBridge.js a été intégré dans le SDK. Regardez com.facebook.graph.core.FacebookJSBridge.as, et vous verrez que le bloc entier de javascript qui était FBJSBridge.js est clouée sur le ExternalInterface dans le constructeur de com.facebook.graph.Facebook.as.

Je me bats avec ce toute la journée. J'ai regardé http GET a donné naissance par Facebook.init (), et il semble que ça attend juste avant son expiration, à quel point une autre GET a donné naissance. Il ne revient jamais normalement. J'ai essayé le APPID, le APIKEY là-bas et toutes sortes de combinaisons de paramètres, mais je ne l'ai vu revenir. Je dois conclure que la façon dont est sa destinée à travailler. Sinon, voilà comment cela fonctionne. : - /

Quoi qu'il en soit, vous verrez à l'intérieur FBAS dans ce bloc de JS dans FacebookJSBridge.as qu'init est abonnée à l'événement « auth.sessionChange » qui déclenche Facebook.handleSessionChange (). Vous pouvez voir c'est où votre rappel est appelée. L'astuce est que c'est ce qui est appelé à tout moment les sessionChanges. Donc, même si la prochaine fois que les feux de événement n'est pas à cause d'une réponse de FB.init (), votre rappel sera toujours se dit à ce moment-là.

Si vous définissez votre propre gestionnaire pour « auth.sessionChange » avant d'appeler Facebook.init (), et vous définissez « cookie » true puis après un cookie qui vous a été créé un événement obtiendrez sessionChange tir juste après appel d'initialisation. Le rappel de Init ne fonctionne toujours pas appelée mais parce que l'EEG n'obtient une réponse.

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

Les exemples que vous trouverez dans ce tutoriel peut travailler, mais ne sont pas ce que vous voulez utiliser lors de la mise en fait une application ensemble. Sinon, vous allez toujours à cliquer sur un bouton pour déclencher fbconnect. On dirait que oauth2 sera le moyen d'obtenir le comportement souhaité de ne pas avoir besoin de cliquer sur un bouton à chaque fois de « connecter ». Vous pouvez obtenir le oauth2 de et clé de session puis utiliser Flash / Facebook GRAPHSDK ou JS selon celui qui est le plus pratique pour ce que vous essayez de faire.

Cela pourrait aider à: http: //blog.yoz. sk / 2010/05 / facebook-graph-api-et-oauth-2 et flash /

Autres conseils

Il semble y avoir plusieurs raisons pour lesquelles cela ne fonctionne pas. Voir ces liens:

http://code.google.com/ p / facebook-actionscript-api / questions / détail? id = 165

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

Pour moi, il est que l'ordre des balises de script est erroné dans le fichier wrapper que le tutoriel Adobe fournit.

Assurez-vous que la bibliothèque Facebook JS est ajouté avant swfobject. C'est à dire. vous assurer que vos balises de script sont dans cet ordre:

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

Remplacer

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

avec

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

i.e.. swfobject. embedSwf

A travaillé comme un charme!

Dans mon cas, ce fut le index.template.html qui ne fonctionne pas. J'ai eu besoin: 1) une référence au SDK FB JS
2) l'utilisation div fb-root comme première entrée à l'intérieur de la balise body

qui a résolu mon problème.

Modifier. Je suis confus que Facebook.init () fonctionne uniquement lorsqu'un utilisateur est connecté pour l'authentification que j'appelle Facebook.login

Edit2: Revisited cette chose ... Cette fois, je manqué que l'URL de la toile doit pointer vers votre page, si bien sûr pas reçu l'appel est dirigé vers une autre page et vous ne une réponse. Évident, mais il m'a frappé à nouveau ......

Il semble que FBAS.getSwf() utilise le nom de la swf dans son appel à document.getElementById.

Donc, si vous spécifiez un identifiant, mais pas un nom, puis le javascript de FacebookJSBridge.as cherche un élément avec l'id de null.

Ou, si vous spécifiez un nom mais pas un identifiant, puis le javascript de FacebookJSBridge.as recherche la chaîne appropriée, mais un élément sans id tel existe.

Si vous spécifiez un nom et un identifiant identique, il peut effectivement trouver le 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 });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top