Facebook 使用Internet Explorer永久重新加载页面

Facebook 使用Internet Explorer永久重新加载页面,facebook,internet-explorer-7,load,p3p,Facebook,Internet Explorer 7,Load,P3p,我在Internet Explorer 7上的FB应用程序有问题 我正在使用FB不久前提供的这段代码: $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" . FACEBOOK_APP_ID . "&redirect_uri=" . urlencode(CANVAS_PAGE . 'index.php') . "&scope=user_likes,publish_stream"; $sig

我在Internet Explorer 7上的FB应用程序有问题

我正在使用FB不久前提供的这段代码:

$auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
        . FACEBOOK_APP_ID . "&redirect_uri=" . urlencode(CANVAS_PAGE . 'index.php') . "&scope=user_likes,publish_stream";

$signed_request = $_REQUEST["signed_request"];

list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

// If first time we use the application -> ask for permissions
if (empty($data["user_id"]))
{
    echo("<script> top.location.href='" . $auth_url . "'</script>");
}   
// else display the page code
else
{
    }
在body标签后面。我还尝试将其添加到body标记之前,最后尝试将其添加为meta标记:

<meta http-equiv="P3P" content='CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM CURa ADMa PHY ONL COM STA"'>

但这三个选项都不适合我,我的应用程序仍然可以永久加载

有人有线索吗

提前谢谢


我在一些论坛上读到了同样的问题:

但是这些解决方案对我都不起作用,我仍然有这个永恒的重新加载页面的问题

我还读了一个论坛,我认为它可以解决我的问题- -但是再一次。。。不走运


有人能帮我吗?

也无法让您的代码工作,它只是重新加载。似乎从未设置$\u请求[“已签名的\u请求”]

但我用的代码是从

当fb会话有时在应用程序中丢失时,这对我很有帮助。在这篇文章中发现:

也无法让代码正常工作,只是重新加载了代码。似乎从未设置$\u请求[“已签名的\u请求”]

但我用的代码是从

当fb会话有时在应用程序中丢失时,这对我很有帮助。在这篇文章中发现: 在Sinatra/Ruby中有一个解决方案帮助我解决了这个问题

我发现这是p3p问题,我只是想为在我之后发现它的人发布一些示例代码。

在Sinatra/Ruby中有一个解决方案帮助我解决了这个问题


我发现这是p3p问题,我只是想为在我之后发现它的任何人发布一些示例代码。

如果你打印($data);除了重定向,您得到了什么?在这种情况下不会发生任何事情。如果我取消注释这一行:echo(“top.location.href=”“$auth_url.”);该错误已修复。问题是,在用户第一次进入我的应用程序时,我绝对需要这一行用于验证对话框。是的,从验证对话框返回后,您似乎没有得到响应。尝试打印$_请求[“已签名的_请求”];看看这里面有什么。也许我不清楚。如果我输出$data,我会得到:数组([算法]=>HMAC-SHA256[过期]=>1320771600[发布时间]=>1320767183[oauth_令牌]=>AAAC13ERCOQ0BACZAXXABGZADUHQAECndBOPCZBZAPLGVTMZ1G25ZBQR1WBESX5QWNSQLWIPWLAXWBIYHC6CGOVX5QDZBLNI5KNZ9RORAZDZD[用户]=>数组([国家]=>es[年龄]=>21]。[用户所在地]=>=>719597603)如果我发出已签名的请求,我会得到一个已签名的请求,这似乎是正确的。我以为你想让我打印($data)而不是重定向行。在这种情况下,正如我所说,我没有得到任何东西,这是正常的:脚本不可能进入“if(empty($data[“user\u id”]))”条件,因为$data['user\u id']不是空的。但如果我离开“echo”(“top.location.href=”)“$auth_url.””)行,那么脚本就会中断。我从没见过这么奇怪的东西!如果您进行打印($data);除了重定向,您得到了什么?在这种情况下不会发生任何事情。如果我取消注释这一行:echo(“top.location.href=”“$auth_url.”);该错误已修复。问题是,在用户第一次进入我的应用程序时,我绝对需要这一行用于验证对话框。是的,从验证对话框返回后,您似乎没有得到响应。尝试打印$_请求[“已签名的_请求”];看看这里面有什么。也许我不清楚。如果我输出$data,我会得到:数组([算法]=>HMAC-SHA256[过期]=>1320771600[发布时间]=>1320767183[oauth_令牌]=>AAAC13ERCOQ0BACZAXXABGZADUHQAECndBOPCZBZAPLGVTMZ1G25ZBQR1WBESX5QWNSQLWIPWLAXWBIYHC6CGOVX5QDZBLNI5KNZ9RORAZDZD[用户]=>数组([国家]=>es[年龄]=>21]。[用户所在地]=>=>719597603)如果我发出已签名的请求,我会得到一个已签名的请求,这似乎是正确的。我以为你想让我打印($data)而不是重定向行。在这种情况下,正如我所说,我没有得到任何东西,这是正常的:脚本不可能进入“if(empty($data[“user\u id”]))”条件,因为$data['user\u id']不是空的。但如果我离开“echo”(“top.location.href=”)“$auth_url.””)行,那么脚本就会中断。我从没见过这么奇怪的东西!嗨,非常感谢你。最后一件事:1)使用此解决方案,我总是收到“状态不匹配。您可能是CSRF的受害者”消息。看来$\u会话总是空的。尽管如此,它还是有效的。2) 您能提供一段代码来使用PHPSDK显示权限对话框吗?很高兴我能提供帮助,我还添加了如何使用PHPSDK进行身份验证。不知道为什么$u会话对您不起作用。你能在会议中安排点什么吗?嗨,非常感谢。最后一件事:1)使用此解决方案,我总是收到“状态不匹配。您可能是CSRF的受害者”消息。看来$\u会话总是空的。尽管如此,它还是有效的。2) 您能提供一段代码来使用PHPSDK显示权限对话框吗?很高兴我能提供帮助,我还添加了如何使用PHPSDK进行身份验证。不知道为什么$u会话对您不起作用。您可以在会话中设置任何内容吗?
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
<meta http-equiv="P3P" content='CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM CURa ADMa PHY ONL COM STA"'>
   <?php
   $app_id = "your app id";
   $app_secret = "your app secret";
   $my_url = "your app url";

   session_start();
   $code = $_REQUEST["code"];

   if(empty($code)) {
     $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
     $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
       . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
       . $_SESSION['state'];

     echo("<script> top.location.href='" . $dialog_url . "'</script>");
   }

   if($_REQUEST['state'] == $_SESSION['state']) {
     $token_url = "https://graph.facebook.com/oauth/access_token?"
       . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
       . "&client_secret=" . $app_secret . "&code=" . $code;

     $response = file_get_contents($token_url);
     $params = null;
     parse_str($response, $params);

     $graph_url = "https://graph.facebook.com/me?access_token=" 
       . $params['access_token'];

     $user = json_decode(file_get_contents($graph_url));
     echo("Hello " . $user->name);
   }
   else {
     echo("The state does not match. You may be a victim of CSRF.");
   }
// update this to where you've stored the facebook PHP SDK
require '../src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'your app id',
  'secret' => 'your app secret',
));

$user = $facebook->getUser();
if ($user) {
  print "You've logged in!";
} else {
  echo("<script> top.location.href='" . $facebook->getLoginUrl() . "'</script>");
}
ini_set('session.use_trans_sid', 1);
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');