Мой друг переместил свой сайт с одного сервера на другой. Его разработчик оставил его на полпути. Веб-сайт использует Fb PHP SDK для входа в систему. Однако после перемещения веб-сайта на новый сервер вход в систему не работает. При входе в систему вы переходите на Facebook, и во время перенаправления страница становится пустой, а в URL добавляется токен, что-то вроде «mywebsite.com/?code=Token». Я много исследовал и не нашел правильного решения. Кто-то предложил мне использовать и SSL-сертификат, но это тоже не сработало. У вас есть идея, что случилось?
Подробности:
URL: http://www.togetherusforever.com (Также недавно использовал SSL)
Проблема: пустая страница после входа в Facebook с URL бытия, https://www.togetherusforever.com/?code=AQAUxDKVyZ-hKAuAVqJyqx6ezja9SZmkSZ4NDgVetjsiSj9GEOQH5TP0djYvszK0fYFxRQ25vhKRsUAgm45xpW_FRiC5g7rs1Z08wHW10Q11IAO8ICyysdcM6nnJTboRceBFtQeUZcPeAk0AnbeQc9FxNTDwvLH8EkAzxALuTdN7ot_ZH6WdTMOORUhYgHGgIbBihZdaT8W9BHlMoAF5UUq_iF3vJL81GtWPLtwOxTihpLJiLcX5d7I7EKZCWEU7NYhjskhng91griuuIB3U5HYU9ELY5Mz8iJV_PhJB3YdQVZ45yPZKpVB8DJso7iuxlPB&состояние = e6bb0e91d75d22e286f0673eefe80c #знак равно
Код выглядит следующим образом:
/*---facebook login---*/
include_once("facebook-init.php");
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
use Facebook\FacebookRedirectLoginHelper;
//$helper = new FacebookRedirectLoginHelper($fb_host_url.'/index.php?facebookLogin&'.SID);
$helper = new FacebookRedirectLoginHelper($fb_host_url.'/index.php?facebookLogin');
/*echo '<pre>';
print_r($helper);*/
if(isset($_SESSION['facebookSessionToken'])){
/*echo 'token-> '.$_SESSION['facebookSessionToken'];*/
}
/*echo '</pre>';*/
if(isset($_GET['facebookLogin'])){
// echo "trying to login with fb";
// check if user is already logged in, else login
try {
$session = $helper->getSessionFromRedirect();
/*echo '<pre>';
echo '<br>Session->:<br>';
print_r($session);
echo '<br>helper->:<br>';
print_r($helper);
echo '</pre>';*/
//exit;
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
echo '<pre>';
echo '<br>RequestException:<br>'.$ex;
echo '<pre>';
} catch(\Exception $ex) {
// When validation fails or other local issues
echo '<pre>';
echo '<br>Exception:<br>'.$ex;
echo '<pre>';
}
// if user logged in, store session
if ($session) {
// Logged in
/*echo "FB login success";
echo '<pre>Session value';
print_r($session);
echo '</pre>';*/
//$session = new FacebookSession('access-token-here');
$_SESSION['facebookSessionToken'] = $session->getToken(); // save token in session, temporarily
// Get the GraphUser object for the current user:
try {
$me = (new FacebookRequest( $session, 'GET', '/me' ))->execute()->getGraphObject(GraphUser::className());
$friends = (new FacebookRequest( $session, 'GET', '/me?fields=friends.limit(10000){name,about,birthday,address}' ))->execute()->getGraphObject(GraphUser::className());
$photos = (new FacebookRequest( $session, 'GET', '/me?fields=id,name,photos{images,id}' ))->execute()->getGraphObject(GraphUser::className());
$permissions = (new FacebookRequest( $session, 'GET', '/me?fields=permissions' ))->execute()->getGraphObject(GraphUser::className());
//$friendlist = (new FacebookRequest( $session, 'GET', '/me/photos' ))->execute()->getGraphObject(GraphUser::className());
//$me = (new FacebookRequest( $_SESSION['facebookSessionToken'], 'GET', '/me' ))->execute()->getGraphObject(GraphUser::className());
//echo $me->getName();
$me_array = $me->asArray();
$friends_array = $friends->asArray();
$photos_array = $photos->asArray();
$permissions_array = $permissions->asArray();
foreach($friends_array['friends'] as $friend){
$f = $friend->total_count;
}
/*echo '<pre>';
print_r($me);
echo '<br>====<br>';
print_r($me_array);
echo '<br>====<br>';
print_r($session);
echo '<br>==friends==<br>';
print_r($friends);
echo '<br>==friends_as_array==<br>';
print_r($friends_array);*/
/*$friends_obj = $friends->getProperty("id", 'Facebook\GraphObject');
$friends_obj_array = friends_obj->asArray();*/
/*$friends_obj = $friends_array['friends'];
$friends_obj_array = $friends_obj->asArray();
foreach($friends_obj_array['data'] as $individual_friend){
echo "<br>";
var_dump($individual_friend);
echo "<br>";
}*/
/*echo '<br>==1st friend==<br>';
var_dump($friends_obj);
echo '<br>==1st friend_as_array==<br>';
var_dump($friends_obj_array);*/
/*echo '<br>==photos==<br>';
print_r($photos);
echo '<br>==photos_as_array==<br>';
print_r($photos_array);
echo '<br>==user_permissions==<br>';
print_r($permissions);
echo '<br>==user_permissions_as_array==<br>';
print_r($permissions_array);
echo '</pre>';*/
} catch (FacebookRequestException $e) {
// The Graph API returned an error
echo '<pre>';
echo '<br><h1>RequestException:<br>'.$e.'</h1>';
echo '<pre>';
} catch (\Exception $e) {
// Some other error occurred
echo '<pre>';
echo '<br><h1>Exception:<br>'.$e.'</h1>';
echo '<pre>';
}
// add user data to db and login user using that data from db
if(!empty($me_array['email'])){
if(!$func->isCustomerExisting($me_array['email'])){
// echo '<h1>registering !!</h1>';
$func->registerCustomerUsingFacebook($me_array['first_name'], $me_array['last_name'], $me_array['email'], $me_array['id'], $f, $me_array['gender'], md5(time()));
$func->loginCustomerUsingFacebook($me_array['email'], "normallogin");
} else {
$func->query("update ".PREFIX."users set facebook_friends='$f' where facebook_email='$me_array[email]'");
//$func->updateCustomerUsingFacebook($me_array['email']);
$func->loginCustomerUsingFacebook($me_array['email'], "normallogin");
// echo '<h1>logging in !!</h1>';
}
} else { // user has no email registered with face book
$loginoutUrl = $helper->getLogoutUrl($session, $fb_host_url.'/index.php?fbfailed');
//echo $loginoutUrl;
//header("location: ".$loginoutUrl);
header("location: index.php?fbfailed");
}
} else {
header("location: index.php?fbfailed");
}
} else {
$helper = new FacebookRedirectLoginHelper($fb_host_url.'/index.php?facebookLogin');
$loginUrl = $helper->getLoginUrl(
array(
'scope' => 'email,read_friendlists,user_photos,user_friends'
));
// echo 'First Time login: ->'.$loginUrl;
}
PS: Извините, если это что-то глупое. Это мой первый раз здесь. 😉
Задача ещё не решена.
Других решений пока нет …