This authorization code has been used error retued when refreshing the page after login using facebook id. I have read many blogs and I did not get any idea about this issue. Here is my code.
fblogin.php
<?php
session_start();
// added in v4.0.0
require_once __DIR__.'vendorautoload.php';
//require 'functions.php';
use FacebookFacebookSession;
use FacebookHelpersFacebookRedirectLoginHelper;
use FacebookFacebookRequest;
use FacebookFacebookResponse;
use FacebookExceptionsFacebookSDKException;
use FacebookFacebookRequestException;
use FacebookFacebookAuthorizationException;
use FacebookGraphNodesGraphObject;
use FacebookAuthenticationAccessToken;
use FacebookHttpClientsFacebookCurlHttpClient;
use FacebookHttpClientsFacebookHttpable;
$appId='myappid';
$secretkey='mysecretkey';
// init app with app id and secret
FacebookSession::setDefaultApplication($appId,$secretkey);
$fb=new FacebookFacebook(['app_id'=>'myappid','app_secret'=>'mysecretkey','default_graph_version' => 'v2.4']);
// login helper with redirect_uri
//$helper = new FacebookRedirectLoginHelper('http://localhost:81/fblogin/fblogin.php',NULL,NULL);
$helper=$fb->getRedirectLoginHelper();
$permissions = ['email', 'user_likes'];
if(isset($_REQUEST['logout'])){
//$accessToken=null;
unset($_SESSION['facebook_access_token']);
unset($_SESSION['facebook_user']);
session_unset();
}
try {
// Logged in!
$accessToken = $helper->getAccessToken();
} catch(FacebookExceptionsFacebookResponseException $e) {
// When Graph retus an error
echo 'Graph retued an error: ' . $e->getMessage();
echo 'Facebook SDK retued an error: ' . $e->getTraceAsString();
} catch(FacebookExceptionsFacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK retued an error: ' . $e->getMessage();
echo 'Facebook SDK retued an error: ' . $e->getTraceAsString();
}
if (isset( $accessToken)) {
$oAuth2Client = $fb->getOAuth2Client();
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
$_SESSION['facebook_access_token'] = (string) $accessToken;
if(!isset($_SESSION['facebook_user'])) {
$response=$fb->get('/me?fields=id,name',$_SESSION['facebook_access_token']);
$user=$response->getGraphUser();
$_SESSION['facebook_user']=$user;
}
} elseif ($helper->getError()) {
// The user denied the request
exit;
}
else{
$loginUrl=$helper->getLoginUrl('http://localhost:81/fblogin/fblogin.php',$permissions,'&');
}
include 'index.php';
?>
index.php
<?php //
//session_start();
if(isset($_SESSION['facebook_user']))
{
if($_SESSION['facebook_user'])!
print_r($_SESSION['facebook_user']);
echo '<a href=?logout>Logout</a>';
}
else
{
echo '<a href="'.$loginUrl.'">Login with FB</a>';
}
?>
Steps:
-Run fblogin.php and click "Login with FB" link
-Enter user name and password of FB
-Check User id and name is displayed with Logout link in Index.php
-Now refresh the browser.
-Verify "Graph retued an error: This authorization code has been used" error thrown.
My question is, to resolve this problem, what i will do with the above code. If I have missed anything in my code, suggest me where i want to add or remove the line of code.
I am using Wamp server and Facebook SDK 5. Thanks in advance.
