使用PHP的FacebookOAuth的问题

使用PHP的FacebookOAuth的问题,php,facebook,oauth,Php,Facebook,Oauth,我在使用PHP SDK oauth访问Facebook时遇到了一些奇怪的行为。在Firefox中,我可以登录并允许应用。我被重定向到我的测试页面,在那里我输出我的用户id,用户信息等等。真漂亮 接下来,我打开Chrome、IE或Safari,登录Facebook后,我被重定向到同一个页面,但这一次,我没有显示为已登录。没有用户id,我可以验证我是否登录了Facebook 事情变得更奇怪了。我在Firefox注销时返回Facebook,返回测试脚本,它仍然显示我已登录。。即使我通过LogOutUR

我在使用PHP SDK oauth访问Facebook时遇到了一些奇怪的行为。在Firefox中,我可以登录并允许应用。我被重定向到我的测试页面,在那里我输出我的用户id,用户信息等等。真漂亮

接下来,我打开Chrome、IE或Safari,登录Facebook后,我被重定向到同一个页面,但这一次,我没有显示为已登录。没有用户id,我可以验证我是否登录了Facebook

事情变得更奇怪了。我在Firefox注销时返回Facebook,返回测试脚本,它仍然显示我已登录。。即使我通过LogOutURL完全注销。在发布$facebook->destroySession()之后;这最终显示我正确地注销了。。现在我无法使用任何浏览器登录

我已经验证了我有一个正确的访问令牌,并注意到登录URL中的“state”变量随着测试页面上的每个页面刷新而不断变化

有什么想法吗

这是我的测试代码。。显然,appid和secret已被删除。应用程序已经创建,看起来可以通过Facebook运行。。。就像我说的,它曾经奏效过

<?
require_once("facebook.php");

$config = array();
$config['appId'] = 'blahblahblah';
$config['secret'] = 'blahblahblah';
$config['canvas'] = false;
$config['fbconnect'] = true;

$facebook = new Facebook($config);

var_dump($facebook);
echo '<br /><br />';

echo 'Access Token<br />';
var_dump($facebook->getAccessToken());

echo '<br /><br />';


echo 'Login Status URL<br />';
var_dump($facebook->getLoginStatusUrl());

echo '<br /><br />';

$user = $facebook->getUser();

$loginUrl = $facebook->getLoginUrl();
echo 'login URL: '.$loginUrl;
echo '<br />';
$logoutUrl = $facebook->getLogoutUrl();
echo 'logout URL: '.$logoutUrl;


echo '<br />';

$user = $facebook->getUser();

echo var_dump($user);


echo '<br />';

$user = $facebook->api('/me');

var_dump($user);

//$facebook->destroySession();
?>

我发现了问题。我在日志中看到:

 CSRF state token does not match one provided.
这个问题与多个“状态”有关。我的测试脚本对$facebook->getLoginUrl()进行了各种调用,这显然是造成问题的原因。我将测试脚本调整为$user是否为'false',如果是,则调用getLoginUrl()并重定向/验证。。。然后返回。这全面解决了这个问题

以下是帮助识别此问题的链接:

我讨厌facebook的API。仅此而已。祝你好运我希望你能解决它。我将提前观看。使用try/catch块抛出任何Facebook API错误。浏览器控制台或PHP错误日志中最有可能出现的错误是seenNo error,UserID只返回int(0)。我试过了$facebook->getUser()刚刚返回0。我已经100%登录,并且不会被发送到通过getLoginUrl()登录