【问题标题】:Facebook redirect loop when running locally本地运行时的 Facebook 重定向循环
【发布时间】:2013-08-13 12:08:01
【问题描述】:

我正在处理一个本地 Facebook 项目。但是当我去 localhost 时,他每次都开始重定向到 localhost/?code=xxxx (xxxx 是很长的随机字符)。

我的代码是:

require_once('sdk/src/facebook.php');

$facebook = new Facebook(array(
  'appId'  => 'MY_APP_ID',
  'secret' => 'MY_APP_SECRET',
  'sharedSession' => true,
  'trustForwarded' => true,
  'cookie' => true
));

$user_id = $facebook->getUser();
if ($user_id) {
  try {
    // Fetch the viewer's basic information
    $basic = $facebook->api('/me','GET');
  } catch (FacebookApiException $e) {
    if (!$facebook->getUser()) {
      //header('Location: '. AppInfo::getUrl($_SERVER['REQUEST_URI']));
      $user_id = null;
    }
  }
}

if(!$user_id) {
    $loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'email,publish_actions'
  ));
    
echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
      exit();
}
...

我的应用设置:

提前致谢。

【问题讨论】:

  • 这可能表明您的会话已丢失 - 检查您的浏览器是否正确接受本地主机的 PHP 会话 cookie。
  • @CBroe 我的 Chrome 浏览器不接受 cookie,但 Firefox 可以。不幸的是,我所有的浏览器都发生了重定向循环。我能做什么?
  • 如果您真的不需要它们,也可以尝试在初始化 SDK 时删除 sharedSessiontrustForwarded 参数。

标签: facebook facebook-php-sdk


【解决方案1】:

可能的问题是,即使在用户登录后,您的应用仍会为 $user_id 返回 0,从而导致 JavaScript 重定向再次发生,从而导致它永远循环。

问题的情况可能是其中之一,但请确保code GET 变量没有被.htaccess 文件或其他方式从URL 中删除。其次,查看this modificationbase_facebook.php文件,改变code的检查方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多