Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 为什么Facebook Actionscript API init()不起作用?_Apache Flex_Facebook_Actionscript_Facebook Graph Api_Facebook Actionscript Api - Fatal编程技术网

Apache flex 为什么Facebook Actionscript API init()不起作用?

Apache flex 为什么Facebook Actionscript API init()不起作用?,apache-flex,facebook,actionscript,facebook-graph-api,facebook-actionscript-api,Apache Flex,Facebook,Actionscript,Facebook Graph Api,Facebook Actionscript Api,我打电话来 com.facebook.graph.facebook.init(APP_ID,loginHandler) 使用actionscript api登录facebook(如本教程所述:)。但是,它似乎没有任何作用 查看API源代码,对JS的唯一调用是 调用('FBAS.init',JSON.encode(选项)) 所需的两个javascript库是: http://connect.facebook.net/en_US/all.js FBJSBridge.js 但是,我在这些库中找不到任

我打电话来 com.facebook.graph.facebook.init(APP_ID,loginHandler)

使用actionscript api登录facebook(如本教程所述:)。但是,它似乎没有任何作用

查看API源代码,对JS的唯一调用是 调用('FBAS.init',JSON.encode(选项))

所需的两个javascript库是:

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

但是,我在这些库中找不到任何关于FBA的参考。我是否使用了正确的库?关于FBA不存在的原因,我是否还遗漏了另一个原因?甚至为什么调用Facebook.init()没有任何作用?

FBJSBridge.js已经嵌入到SDK中。查看com.facebook.graph.core.FacebookJSBridge.as,您将看到FBJSBridge.js的整个javascript块被固定在com.facebook.graph.facebook.as的构造函数中的外部接口上

我一整天都在为此而挣扎。我一直在观察Facebook.init()生成的http,它看起来只是等待它超时,此时会生成另一个GET。它永远不会正常地回来。我试过APPID,里面的APIKEY和各种参数组合,但我从来没有看到它回来。我必须得出结论,这就是它的工作原理。如果没有,那么它就是这样工作的-/

无论如何,您将在FacebookJSBridge.com中的JS块中看到FBAS内部,因为init订阅了触发Facebook.handleSessionChange()的“auth.sessionChange”事件。您可以看到这就是调用回调的地方。诀窍在于,只要会话更改,就会调用它。因此,即使下一次触发事件不是因为来自FB.init()的响应,您的回调仍将在该点被调用

如果您在调用Facebook.init()之前为“auth.sessionChange”设置了自己的处理程序,并将“cookie”设置为true,那么在创建cookie之后,您将在调用init之后立即触发sessionChange事件。尽管如此,Init的回调仍然没有被调用,因为get从未得到响应

Facebook.addJSEventListener("auth.sessionChange", onSessionChange);
Facebook.init(_appID, onInitFacebookConnect, 
      {cookie: true, 
       appId: _appID, 
       perms: "user_birthday,read_stream,publish_stream"});
你将在该教程中找到的示例可能有用,但不是你在实际组装应用程序时想要使用的。否则,您总是要单击按钮来触发fbconnect。看起来oauth2将是一种获得所需行为的方法,无需每次单击按钮即可“连接”。您可以从oauth2获取sessionkey,然后使用Flash/Facebook GRAPHSDK或JS,具体取决于您尝试执行的操作中最方便的一种

这可能有助于:
这一失败似乎有多种原因。请参阅以下链接:

对我来说,Adobe教程提供的包装文件中脚本标记的顺序是错误的

确保在swfobject之前添加Facebook JS库。即,确保您的脚本标记按以下顺序排列:

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

似乎
FBAS.getSwf()
在调用
document.getElementById
时使用了swf的名称

因此,如果指定的是id而不是名称,那么FacebookJSBridge.as的javascript将查找id为null的元素

或者,如果指定的是名称而不是id,则FacebookJSBridge.as的javascript会查找适当的字符串,但不存在没有此类id的元素

如果指定一个名称和一个相同的id,那么它实际上可以找到swf


替换

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

i、 e.swfobject.embeddeswf


工作得很有魅力

以下是您的问题的答案。

在我的例子中,index.template.html不起作用。我需要: 1) 对FB JS SDK的参考
2) 使用fb root div作为body标记内的第一个条目

这解决了我的问题

编辑:我很困惑Facebook.init()只在用户登录时起作用。对于身份验证,我调用Facebook.login


编辑2:重温这件事。。。这一次我错过了画布url需要指向您的页面,如果没有,当然呼叫会转到另一个页面,您永远不会收到响应。很明显,但它再次打动了我……

坦率地说,我受够了Facebook API。我将尝试使用JSAPI,因为它似乎被更广泛地使用。我将在JS中执行我需要的操作,然后使用ExternalInterface将信息传递给Flex。
embedSWF("MyApp.swf", "flashContent", "640", "480", "9.0", null, null, null, {name:"flashContent"});    
swfobject.embedSWF("MyApp.swf", "flashContent", "640", "480", "9.0", null, null, null, {name:"flashContent"});