在应用程序内的页面之间移动时访问Facebook signed_request? $ facebook-> getSignedRequest()

时间:2011-06-22 04:42:50

标签: php facebook facebook-page

我正在Facebook页面中安装应用程序。我在$ _REQUEST中收到了signed_request变量,或者在使用Facebook PHP SDK Facebook :: getSignedRequest()函数时收到了。但是,在我的应用程序中,当我转到应用程序中的不同页面时,signed_request不会遵循它。

我知道它放在$ _SESSION中,而signed_request数据存储在会话中,但我应该调用哪种方法来获取数据?我是否必须自己将其从会话中删除而不使用PHP SDK?我希望getSignedRequest总是给我相同的结果,只要我在$ _REQUEST或$ _SESSION中收到它。

请指教!提前谢谢!

2 个答案:

答案 0 :(得分:2)

我认为这里的问题是第三方Cookie,这是我经常遇到的问题。

我过去解决它的方法是检查已签名请求的初始加载,如果存在,则将原始签名请求数据附加到所有链接上的查询var(即http://www.example.com/page&signed_request=<<signed_request>>

它并不漂亮,但是你的网址在iframe中是隐藏的,因为如果你的应用程序不在iframe中,我不建议这样做。

您还需要检查可能影响请求中数据的任何Javascript或服务器端代码,并相应地修改您的网址。

我希望有一种比这更好的工作方式,但这是我到目前为止唯一的解决方法(不使用facebook网址上的app_data查询var进行导航)。

答案 1 :(得分:0)

如何在会话中保存signedRequest并重用它?

$signedRequest = $facebook->getSignedRequest();
if(isset($signedRequest)) $_SESSION['signedRequest'] = $signedRequest;
else $signedRequest = $_SESSION['signedRequest'];