fb身份验证的无限循环

时间:2012-09-30 14:30:53

标签: php facebook

尝试提取简单的身份验证,给我无限循环。

最奇怪的是,当使用Mixed js和Php api时,它可以工作。

    <?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());

上面的代码给了我无限循环。 但!如果你删除了标题重定向,并且我只使用js sdk进行登录过程,那就可以了。

2 个答案:

答案 0 :(得分:2)

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

据我了解,标题已设置,但脚本未停止。想象一下不同的标题(不是Location),如果脚本被停止则会很糟糕。请尝试以下方法:

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

HTH

答案 1 :(得分:1)

在任何情况下,请确保您拥有最新的SDK。我使用过时的SDK看到了这种行为。您的代码中的注释指向已弃用的版本。确保您的代码来自https://github.com/facebook/facebook-php-sdk,而不是来自评论中所述的https://github.com/facebook/php-sdk

此外,您正在跳过examples from Facebook on github中可以看到的几个步骤。尝试完全像它们一样。

$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);
}

我仍然不肯定header会起作用,所以您可能还想尝试使用javascript重定向:

echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
相关问题