2011-11-11 49 views
1

我只想问一个关于Facebook“signed_request”的问题。signed_request正在离开Facebook应用程序

我为我的应用程序使用了Zend Framework。 事情是;当用户首次授权我的应用程序或从apps.facebook.com/my_app/ URL输入应用程序时,我正在成功检索signed_request。

事实上,我检索它从apps.facebook.com/my_app/index.php(感谢this question

OK,应用程序已经启动,我收到签名的请求,其存储在用户会话。但是,当用户点击我的应用程序中的任何地方时,$ facebook对象会再次创建,但是这次它没有signed_request。

this topic on Codeplex,我能想到的是signed_request会在用户的第二次请求:

而是使用cookie,您应在每个请求使用签名的请求值 ,Facebook的帖子送到你的网页。

在另一方面,Facebook的文档说:

一个signed_request传递给应用程序在Facebook.com上时,他们 加载到Facebook的环境现在

,实做在每次通话中发送此请求还是在我的应用程序中存在技术问题?它可能是一个IFrame的问题?当用户点击“类别”时,页面在同一iframe中加载,地址栏上的URL不会更改。

回答

3

我认为它基本上是“每个请求”的含义的定义差异。当第一次构建包含iframe时,即当用户直接将apps.facebook.com/your_app/somepage.php作为其浏览器位置时,Facebook将post signed_request仅发送到。如果用户遵循页面上的“正常”链接,导致只重新载入iframe而不是整个页面,则不会发送signed_request。如果以这种方式考虑它会有帮助,那么signed_request将在用户第一次加载应用程序时发送,但不会在每个后续请求中发送。对此存在一些混淆的原因是许多编码人员通过使他们的所有链接都使用target=_top并将它们指向apps.facebook.com/your_app/yourpage.php而不是www.yourdomain.com/yourpage.php而采取了一种骇人的捷径。 。由于每次都会重新构造整个页面,因此确实会在每次页面抓取时发送signed_request。但是,在正常(和推荐)的操作中,您只需要依靠发送一次signed_request。

+0

好的和明确的答案。我现在明白这个问题。感谢您提供丰富的评论:) – emregecer

相关问题