Php fb认证的无止境循环

Php fb认证的无止境循环,php,facebook,Php,Facebook,试图拉出简单的身份验证,给了我无尽的循环 最奇怪的是,当使用混合js和PHPAPI时,它可以工作 <?Php //uses the PHP SDK. Download from https://github.com/facebook/php-sdk require 'src/facebook.php'; $facebook = new Facebook(array( 'appId' => '306597542762982', 'secret' => '8

试图拉出简单的身份验证,给了我无尽的循环

最奇怪的是,当使用混合js和PHPAPI时,它可以工作

    <?Php
//uses the PHP SDK.  Download from https://github.com/facebook/php-sdk
require 'src/facebook.php';


$facebook = new Facebook(array(
  'appId'  => '306597542762982',
  'secret' => '88XXXXXXf1',
));


if(!$facebook->getUser())
    header("location: ".$facebook->getLoginUrl ());

var_dump($facebook->getUser());

编辑:好的,这不是问题的解决方案,抱歉

据我所知,头已经设置好了,但是脚本没有停止。想象一个不同的头(而不是
位置
),如果脚本在那时停止,它将是不好的。因此,请尝试以下方法:

if(!$facebook->getUser()) {
    header("location: ".$facebook->getLoginUrl ());
    die();
}

HTH

在进行任何操作之前,请确保您拥有最新的SDK。我在使用过时的SDK时看到过这种行为。代码中的注释指向不推荐使用的版本。确保你的代码是源代码,而不是评论中所说的源代码

此外,您正在跳过可以在中看到的几个步骤。试着像他们那样做

$user = $facebook->getUser();
if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
然后

if (!$user) {
  $loginUrl = $facebook->getLoginUrl();
  header("Location: " . $loginUrl);
}
我仍然不确定
标题是否有效,因此您可能还想尝试使用javascript重定向:

echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
echo“top.location.href='$loginUrl';”;

你能粘贴$facebook->getUser()的var\u转储结果吗?好的。你能粘贴你在$facebook->getLoginUrl()中得到的东西吗?string(145)”“你是在应用程序画布上还是在粉丝页面选项卡上?OMG。恐怕。。。在
它的哪一部分起作用之前,您是否尝试过删除所有空白(看起来您有一个空白)?你只是使用了我提供的代码,还是得到了最新的SDK?好吧,为什么我得到了一个答案的赞成票,但这并没有回答问题?:)很难说它对OP是否正确,但是如果你在header()之后有事情发生,那么它可以为我工作