【问题标题】:Issues with Facebook oauth with PHP使用 PHP 的 Facebook oauth 问题
【发布时间】:2013-07-14 08:38:10
【问题描述】:

我在使用 PHP SDK oauth to Facebook 时遇到了一些奇怪的行为。在 Firefox 中,我能够登录并允许该应用程序。我被重定向到我正在输出我的用户 ID、用户信息等的测试页面。漂亮!

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

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

我已验证我有正确的访问令牌,并注意到登录 URL 中的“状态”变量会随着测试页面上的每次页面刷新而不断变化。

有什么想法吗?

这是我的测试代码.. 显然 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();
?>

【问题讨论】:

  • 我讨厌 facebook 的 API。就这些。祝你好运。我希望你能解决它。我会期待的。
  • 使用 try/catch 块抛出任何 Facebook API 错误。浏览器控制台或 PHP error_log 中很可能出现错误
  • 完全没有错误,UserID 只是返回为 int(0)。我尝试了尝试/捕获。 $facebook->getUser() 只是返回 0。我已 100% 登录,我没有通过 getLoginUrl() 发送登录

标签: php facebook oauth


【解决方案1】:

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

 CSRF state token does not match one provided.

问题与多个“状态”有关。我的测试脚本正在响应对 $facebook->getLoginUrl() 的各种调用,这显然会导致问题。我将测试脚本调整为 $user 是否为“假”,如果是,则调用 getLoginUrl() 并重定向/验证...并返回。这全面解决了问题。

以下是帮助识别此问题的链接: CSRF state token does not match one provided FB PHP SDK 3.1.1 Oauth 2.0

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 2011-08-07
    • 2015-06-20
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 2018-11-15
    相关资源
    最近更新 更多