【发布时间】:2011-12-20 13:32:49
【问题描述】:
我在使用 Internet Explorer 7 时遇到问题。
我正在使用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
{
}
使用此代码,页面可以正确加载,但 1 秒后,它会重新加载,依此类推,因此无法使用。
取消注释
echo("<script> top.location.href='" . $auth_url . "'</script>");
问题解决了(顺便说一句,在我的情况下,代码不应该执行这一行......这很奇怪,取消注释未使用的代码行解决了我的问题,但无论如何......)
看了一些论坛,我的印象是这个问题是一个P3P头相关的问题。所以我尝试添加这一行:
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
在body标签之后。我也尝试在body标签之前添加它,最后我尝试将它添加为元标签:
<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"'>
但是这 3 个选项都不适合我,而且我的应用仍然会永远加载。
有人知道吗?
提前致谢!
好吧,我阅读了一些与相同问题相关的论坛:
- http://facebook.stackoverflow.com/questions/5808187/facebook-app-loads-fine-in-firefox-but-keeps-reloading-in-internet-explorer-7-8
- http://facebook.stackoverflow.com/questions/5986373/facebook-app-canvas-page-keeps-refreshing-on-internet-explorer-ie7
但是这些解决方案都不适合我,我仍然有这个永恒的重新加载页面问题。
我还阅读了一个我认为可以解决我的问题的论坛 - http://adamyoung.net/IE-Blocking-iFrame-Cookies - 但又一次......运气不好。
谁能帮帮我???
【问题讨论】:
-
如果你做一个 print_r($data);而不是重定向,你得到了什么?
-
在这种情况下没有任何反应。如果我取消注释这一行: echo("");该错误已修复。问题是,当用户第一次进入我的应用程序时,我绝对需要在 Auth 对话框中使用这一行。
-
是的,从身份验证对话框返回后,您似乎没有得到回复。尝试打印 $_REQUEST["signed_request"];看看里面有没有什么。
-
也许我不清楚。如果我输出$数据获取:阵列([算法] => HMAC-SHA256 [到期] => 1320771600 [issued_at] => 1320767183 [组oauth_token] => AAAC13ErcOq0BACZAxxabgZADUHq3aEcNdBopCZBZAPLgVTMXFz1g25ZBqr1WbEsX5QWXnsqLwIPVlAxWbIyHC6cGOvx5qDZBlNi5knz9rORAZDZD [用户] =>数组([国家] => ES [ locale] => en_US [age] => Array ([min] => 21)) [user_id] => 719597603)
-
如果我发出签名请求,我会收到一个似乎没问题的签名请求。我以为你想让我做一个 print_r($data) 而不是重定向行。在这种情况下,正如我所说,我没有得到任何东西,这很正常:脚本应该不可能进入“if (empty($data["user_id"]))”条件,因为 $data[ 'user_id'] 不为空。但是如果我离开 "echo("");"行,然后脚本被破坏。我从来没有见过这么奇怪的东西!
标签: facebook internet-explorer-7 load p3p