Automatic Generate Facebook access token you just need the client app id, secret key and short time access token to generating long time access token.
Here is the code :
$ch1 = curl_init(); //this part we set up curl
curl_setopt($ch1, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token?client_id='.$wkapiid.'&client_secret='.$wkappsecret.'&grant_type=fb_exchange_token&fb_exchange_token='.$accesstoken.'');
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1, CURLOPT_TIMEOUT, 15);
curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true);
$longaccesstoken = curl_exec($ch1);
curl_close($ch1);
header('Content-type: application/xml'); //specify as xml to not display as one long string
$data=json_decode($longaccesstoken);
This is the full code which is used to generate access token for each time just before 2 month.
jimport( 'joomla.filesystem.file' );
jimport( 'joomla.filesystem.stream' );
function getName($file) {
$slash = strrpos($file, DS);
if ($slash !== false) {
return substr($file, $slash + 1);
} else {
return $file;
}
}
$wkdates = getdate();
$searchdir = "modules/mod_facebookwall/elements";
$filestext = glob($searchdir.'/*.txt', GLOB_BRACE);
$filename = getName(JPATH_ROOT."/".$filestext[0]);
$accesstokenfinal = file_get_contents(JPATH_ROOT."/".$filestext[0]);
$filetime = explode(".txt", $filename);
$filerealtime = $filetime[0];
if($filerealtime < $wkdates[0])
{
if($filerealtime==0){
$ch1 = curl_init(); //this part we set up curl
curl_setopt($ch1, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token?client_id='.$wkapiid.'&client_secret='.$wkappsecret.'&grant_type=fb_exchange_token&fb_exchange_token='.$accesstoken.'');
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1, CURLOPT_TIMEOUT, 15);
curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true);
$longaccesstoken = curl_exec($ch1);
curl_close($ch1);
header('Content-type: application/xml'); //specify as xml to not display as one long string
$data=json_decode($longaccesstoken);
if($data->error->code==190){
echo "Error validating access token, Please Give right Accesstoken for that APPS ";
}
elseif ($data->error->code==101) {
echo "Error validating application, Please Give right API ID for that APPS ";
}
elseif ($data->error->code==1) {
echo "Error validating client secret, Please Give right Secret Key for that APPS ";
}
else{
$stripacceess = explode("access_token=", $longaccesstoken);
$finalstripacees = explode("&expires=", $stripacceess[1]);
$accesstokenfinal = $finalstripacees[0];
$explodedate = $finalstripacees[1];
$changefiletime = $wkdates[0] + $explodedate -2000;
$tempfilepath = JPATH_ROOT . DS . 'modules' . DS . 'mod_facebookwall'. DS . 'elements';
$fileIniName = JPATH_ROOT."/modules/mod_facebookwall/elements/".$filerealtime.".txt";
$fileChangeName = JPATH_ROOT."/modules/mod_facebookwall/elements/".$changefiletime.".txt";
file_put_contents(JPATH_ROOT."/".$filestext[0], $accesstokenfinal);
rename($fileIniName, $fileChangeName);
}
}
else{
$ch = curl_init(); //this part we set up curl
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token?client_id='.$wkapiid.'&client_secret='.$wkappsecret.'&grant_type=fb_exchange_token&fb_exchange_token='.$accesstokenfinal.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$longaccesstoken = curl_exec($ch);
curl_close($ch);
header('Content-type: application/xml'); //specify as xml to not display as one long string
$data=json_decode($longaccesstoken);
if($data->error->code==190){
echo "Error validating access token, Please Give right Accesstoken for that APPS ";
}
elseif ($data->error->code==101) {
echo "Error validating application, Please Give right API ID for that APPS ";
}
elseif ($data->error->code==1) {
echo "Error validating client secret, Please Give right Secret Key for that APPS ";
}
else{
$stripacceess = explode("access_token=", $longaccesstoken);
$finalstripacees = explode("&expires=", $stripacceess[1]);
$accesstokenfinal = $finalstripacees[0];
$explodedate = $finalstripacees[1];
$changefiletime = $wkdates[0] + $explodedate -2000;
$tempfilepath = JPATH_ROOT . DS . 'modules' . DS . 'mod_facebookwall'. DS . 'elements';
$fileIniName = JPATH_ROOT."/modules/mod_facebookwall/elements/".$filerealtime.".txt";
$fileChangeName = JPATH_ROOT."/modules/mod_facebookwall/elements/".$changefiletime.".txt";
file_put_contents(JPATH_ROOT."/".$filestext[0], $accesstokenfinal);
rename($fileIniName, $fileChangeName);
}
}
}