所以我前几天发布了一个问题,我在尝试使用我的网站上的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.
?>
希望我已经提供了足够的信息。我会赞扬那些找到答案的人,因为我已经挣扎了好几天了。