我写一个Facebook应用程序是一个简单的棋盘游戏,其余以JavaScript已经实现。 Facebook的似乎只让一个iframe,所以我用装在<fb:iframe>页面中运行JavaScript的应用程序。我只是希望能够告诉JavaScript的用户的ID,所以我可以告诉用户,如果轮到他或没有,但我不能从FB中访问Facebook的数据找到文档:iframe中。我可能错过了一些基本conecpt,因为我不知道Facebook的API非常好。

有帮助吗?

解决方案

Facebook的API是非常艰难的追随,和文档是非常差的。你说得对JavaScript的......普通的JavaScript只能在Facebook上的iframe内,否则你只限于过滤JavaScript的一个子集,称为FBJS。您可以放心地忽略有关FBJS文档中任何事情,并专注于I帧。

<强> I帧装载

我要提到的第一件事是,一个<fb:iframe>标签实际上得到与在src属性一吨的东西呈现。所以,如果你把一个标签像这样到你的Facebook页面:<fb:iframe src="http://example.com/page?x=y">,它最终成为当它加载到用户的浏览器更像是这样的:

<iframe src="http://example.com/page?x=y&fb_sig_in_iframe=1&fb_sig_locale=en_US&fb_sig_in_new_facebook=1&fb_sig_time=1246340245.3338&fb_sig_added=1&fb_sig_profile_update_time=1242155811&fb_sig_expires=1246345200&fb_sig_user=000000001&fb_sig_session_key=2.d13uVGvWVL4hVAXELgxkZw__.3600.1246345200-000000001&fb_sig_ss=mZtFjaexyuyQdGnUz1zhYTA__&fb_sig_api_key=46899e6f07cef023b7fda4fg2e21bc58&fb_sig_app_id=22209322289&fb_sig=bbc165ebc699b12345678960fd043033">

的Facebook增加一吨的东西到src。告诉你用户的Facebook ID的参数是fb_sig_user(这是000000001这里)。我假设你的应用程序设置为“FBML应用程序”,因为你可能不会在“iframe应用程序”使用<fb:iframe>标签。尽管如此,绘制方法是在两种情况下相似,你会得到一堆额外的东西你src文档中的“iframe应用程序”的可能。

这确实仅通过您的iframe的第一负载Facebook的用户ID,但是。在iframe中随后的操作将无法访问该用户ID,除非你通过它围绕明确。

<强> Facebook连接

如果您想从iframe中与Facebook互动,这也正是Facebook连接JavaScript库来在建立连接Facebook最好的说明可能的这个wiki页面,但它仍然是一个有点模糊。 Facebook连接,可以用于两种完全外部网站或iframe中只是普通的内容。你属于后一类,因此,如果按照该链接的说明并使用的代码的第一行,在步骤2(用于FeatureLoader),则应该确定。

一旦你已经包括了FeatureLoader.js脚本,并呼吁FB.init,你一般应启动和FB连接运行。您应该能够从再与 API 互动上了。该方法users.getLoggedInUser()会给你通过Javascript的iframe内的当前用户标识。

希望有所帮助。

其他提示

请注意,作为2011年3月的,FB被移动到POST请求装入内部框架。它发送方法=“POST”和目标=“iframe_canvas”,再加上一个输入类型=“隐藏”表单动作用“signed_request”

您中央社使用Facebook API调用来获得用户ID

Users.getLoggedInUser

您可以访问该值,则使用echo()以添加到您的HTML JavaScript变数,这将使得其提供给您的JavaScript代码。

尝试Env.user,已经登录的用户的ID。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top