facebook登录问题和php-sdk:回调页面加载两次

时间:2016-03-13 15:30:33

标签: php facebook authorization facebook-php-sdk facebook-login

所以我前几天发布了一个问题,我在尝试使用我的网站上的facebook php-sdk实现facebook登录时遇到了一个错误:After changing website domain, facebook login returns error "This authorization code has been used"。我在回调页面上收到了一条错误消息“此授权代码已被使用”(见下文)。

但是,我使用页面上的会话设置了一个计数器(请参阅下面的代码),以查看它的加载频率。实际上,我发现每次单击登录按钮时页面都被加载了两次,因此授权代码在两个页面上被加载两次,从而导致错误。我现在的问题是解决页面加载两次的原因。如果有人能告诉我,我会非常感激。

如果有帮助,这是我的代码。

的index.php

<?php

$fb = new Facebook\Facebook([
  'app_id' => '{APP ID}',
  'app_secret' => '{APP SECRET}',
  'default_graph_version' => 'v2.1',
  ]);

$helper = $fb->getRedirectLoginHelper();

$permissions = ['email']; // Optional permissions
$fbLink = $helper->getLoginUrl('http://{domain}/facebook-callback.php', $permissions);

?>

<a href="<?php echo $fbLink; ?>">Login</a>

/facebook-callback.php

<?php

session_start();

//session counter (note: this increments 2 each time, when it should only increment 1)
if (isset($_SESSION["counter"])) {
  $_SESSION["counter"] = $_SESSION["counter"]+1;
} else {
  $_SESSION["counter"] = 0;
}

echo $_SESSION["counter"];

if (($loader = require_once '/var/www/html/vendor/autoload.php') == null)  {
  die('Vendor directory not found, Please run composer install.');
}

$fb = new Facebook\Facebook([
  'app_id' => '{app id}',
  'app_secret' => '{app secret}'
  ]);

$helper = $fb->getRedirectLoginHelper();

try {
  $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
}

...
//My code is longer than this but I get the error from the try statement above, so I did not think it necessary to add it here.
?>

希望我已经提供了足够的信息。我会赞扬那些找到答案的人,因为我已经挣扎了好几天了。

0 个答案:

没有答案