本地运行时的Facebook重定向循环

本地运行时的Facebook重定向循环,facebook,facebook-php-sdk,Facebook,Facebook Php Sdk,我正在做一个当地的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' => tru

我正在做一个当地的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();
}
...
require_once('sdk/src/facebook.php');
$facebook=新的facebook(数组)(
“应用程序ID”=>“我的应用程序ID”,
“机密”=>“我的应用程序机密”,
“sharedSession”=>true,
“trustForwarded”=>正确,
“cookie”=>true
));
$user_id=$facebook->getUser();
if($user\u id){
试一试{
//获取查看者的基本信息
$basic=$facebook->api('/me','GET');
}捕获(FacebookApiException$e){
如果(!$facebook->getUser()){
//标题($Location:'.AppInfo::getUrl($\u SERVER['REQUEST\u URI']);
$user\u id=null;
}
}
}
如果(!$user\u id){
$loginUrl=$facebook->getLoginUrl(数组)(
'范围'=>'电子邮件,发布操作'
));
echo“top.location.href='$loginUrl';”;
退出();
}
...
我的应用程序设置:


提前感谢。

可能的问题是,即使在用户登录后,您的应用程序仍返回
$user\u id
0
,导致JavaScript重定向再次发生,从而导致它永远循环


问题可能是多种情况之一,但请确保
code
GET变量没有通过
.htaccess
文件或其他方式从URL中剥离。其次,查看
base\u facebook.php
文件以更改检查
code
的方式。

可能的问题是,即使在用户登录后,您的应用程序仍会为
$user\u id
返回
0
,导致JavaScript重定向再次发生,导致它永远循环


问题可能是多种情况之一,但请确保
code
GET变量没有通过
.htaccess
文件或其他方式从URL中剥离。其次,查看
base\u facebook.php
文件以更改检查
code
的方式。

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