尝试提取简单的身份验证,给我无限循环。
最奇怪的是,当使用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进行登录过程,那就可以了。
答案 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>";