2012-03-02 35 views
0

注意:这是一个在页面选项卡上运行的Facebook应用程序。jquery重新加载后我无法获得页面喜欢的请求

我有data.php文件获取所有的东西。 我得到这个下面的代码签名的请求:

$facebook = new Facebook(array(
'appId' => $app_id, 
'secret' => $app_secret, 
'cookie' => false 
)); 
$access_token = $facebook->getAccessToken(); 
$signedRequest = $facebook->getSignedRequest(); 
$user_id = $signedRequest['user_id']; 
$liked = $signedRequest['page']['liked']; 

在我的索引文件我有一些包括风扇或没有风扇和步PHP文件的行动。

这里是我的指标代码:

require_once ('data.php'); 
if(isset($fid)){ 
    if(isset($liked)){ 
     $step = CHECK_STEP($fid); 
     if(isset($step)){ 
      if($step == '1'){ 
       include('fan-step1.php'); 
      } 
      if($step == '2'){ 
       include('fan-step2.php'); 
      } 
      if($step == '3'){ 
       include('fan-step3.php'); 
      } 
      if($step == '4'){ 
       include('fan-step4.php'); 
      } 
     } else { 
      include('fan.php'); 
     } 
    } else { 
      include('notfan.php'); 
    } 
} else { 
    if(isset($liked)){ 
      include('fan.php'); 
    } else { 
      include('notfan.php'); 
    } 
} 

我使用步骤PHP文件Ajax更新的步骤检查数据库。如果ajax动作完成,则动作会刷新页面。代码:

success: function(){ 
          window.location = window.location.pathname; 
         } 

刷新页面索引文件或数据文件不能得到页面后喜欢请求。那么如果我刷新页面手册(ctrl + F5)。它获取请求并包含下一步的php文件。

有什么不对?为什么不能在js刷新后得到喜欢的请求?

回答

0

通过重定向,可以刷新iframe。但是,Facebook的签名请求通过POST发送到您的iframe。所以,如果你只是刷新你的iframe,签署的请求将不会再次发送,因为第二个请求(刷新后),请求不是由Facebook执行,而是从您的应用程序内执行。

改为使用top.location重新载入整个页面(脸书+您的标签)。

+0

不安全的JavaScript尝试从URL“我的域URL”框架访问具有URL“Facebook页面URL”的框架。域,协议和端口必须匹配。 – 2012-03-03 00:31:46

+0

我在控制台中出现了这个错误。 Facebook不允许。 – 2012-03-03 00:32:02

+0

是的,你不允许阅读'top.location',因为跨域策略。因此'top.location = top.location'将不起作用。但是您可以将其设置为一个全新的值:'top.location =“http://www.google.de”;'。因此,只需将完整的Tab-URL保存在一个PHP变量中,并将其传递给JavaScript即可获得重定向网址。 – apfelbox 2012-03-03 00:35:42

相关问题