首先为这个问题的长度道歉,并询问 Facebook API(似乎是世界上最不一致的 API 之一......)。
情况:我们正在为我们的客户制作一个 Facebook 产品“社区”类型的页面,其中包含标准的 Facebook 标签,其中一个嵌入了 Flash 游戏。在游戏结束时,我们希望能够通过墙贴分享用户的最终得分,并邀请朋友挑战得分。
首先 - 客户坚持让游戏出现在页面内的选项卡上,因此将这一切都移至应用程序(例如,apps.facebook.com
)很遗憾不是一个选择。我知道您可以在选项卡上嵌入应用程序而不是静态 FMBL,但我已经尝试过,结果基本相同或失败(选项卡对可以呈现的内容施加严格限制,强制使用 FBML 并否定FB:Iframe
初学者的标签)。
目前我们将此游戏嵌入到静态 FBML 选项卡上,使用fb:swf
标记和 FBJS-bridge 来启用选项卡上的一些简单交互(导航到新窗口等)。我们还尝试了 FBJS 嵌入方法,将游戏制作成应用程序并将其添加为页面上的选项卡。在所有情况下,似乎都无法在选项卡环境中获取查看用户的 UID(尽管他们必须首先登录才能查看页面)。游戏本身是 Flash ActionScript 3,我可以选择使用 Facebook ActionScript 3 API。使用这种方法,到目前为止我设法提出的最佳过程概述如下:
0)创建一个单独的应用程序,其唯一目的是处理分数共享等。
1) 用户在游戏结束时点击 TAB 页面上的“分享我的分数”。
2) SWF通过打开一个新选项卡执行标准 Facebook 的“登录到应用程序”请求。
3) 用户确认此操作并关闭新窗口。
4) 用户在 Flash 游戏中再次单击以确认他们已登录。
5) SWF 执行facbook.verifySession()
并打开另一个窗口,请求允许在用户的墙上张贴。
6) 用户确认这一点并再次被带回游戏。
7) SWF 监听“FacebookEvent.PERMISSIONS_CHANGED”并在确认后发布到墙上。
由于无法验证用户在加载选项卡时是否添加了应用程序,因此他们可能每次想要发布游戏结果时都必须遵循此过程,这很可怕。主要问题似乎是,驻留在 Facebook 选项卡上的任何RIA在该选项卡的 OAuth 令牌中都没有收到有用的信息,这与 RIA 相比,apps.facebook.com
它可以在请求标头中获取我需要的所有信息。
简而言之,我需要最简单、最直接的方法从 Facebook 产品页面选项卡中制作 Facebook 墙贴,无论是使用 FMBL、FBJS、ActionScript 3、ASP 还是它们的任何组合。
我已经看到了:https ://stackoverflow.com/questions/3674923/facebook-share-or-publish-dialogue-from-page-tab-closed这确实是我要问的同一个问题,但答案是不清楚,而且似乎不能解决我的问题。