FBJSBridge.js 已嵌入 SDK。查看 com.facebook.graph.core.FacebookJSBridge.as,您会看到 FBJSBridge.js 的整个 javascript 块被附加到 com.facebook.graph.Facebook.as 的构造函数中的 ExternalInterface 上。
我整天都在为此苦苦挣扎。我一直在看 Facebook.init() 生成的 http GET,看起来它只是等到超时,此时又生成了另一个 GET。它永远不会正常返回。我尝试了 APPID、APIKEY 和各种参数组合,但我再也没有看到它回来了。我必须得出结论,这就是它的工作方式。如果没有,那么它就是这样工作的。:-/
无论如何,您会在 FacebookJSBridge 的那个 JS 块中看到 FBAS 内部。因为该 init 订阅了触发 Facebook.handleSessionChange() 的“auth.sessionChange”事件。你可以看到这是你的回调被调用的地方。诀窍是在 sessionChanges 的任何时候都会调用它。因此,即使下一次该事件触发不是因为来自 FB.init() 的响应,您的回调仍然会在那时被调用。
如果您在调用 Facebook.init() 之前为“auth.sessionChange”设置了自己的处理程序,并且将“cookie”设置为 true,那么在创建 cookie 后,您将在调用 init 后立即触发 sessionChange 事件。但是,初始化的回调仍然没有被调用,因为 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,具体取决于您想要做什么最方便。
这可能会有所帮助:
http ://blog.yoz.sk/2010/05/facebook-graph-api-and-oauth-2-and-flash/