Получение информации о пользователе во вкладке с помощью Facebook SDK 4

Мне было интересно, возможно ли получить имя или адрес электронной почты пользователя на вкладке страницы Facebook.
Я пытался сделать это в течение достаточно долгого времени, и, похоже, не могу этого понять.
Это было довольно легко со старым SDK, но с этим мне нужен FacebookRequest (), который я могу получить только после getSessionFromRedirect ().
Теперь настоящая проблема в том, что когда я перенаправляю пользователя обратно в Facebook, я теряю сессию.

Код:

session_start();

define('BASE', 'http://www.example.com/');
define('APP_ID', '123456789');
define('APP_SECRET', 'qwerty');
define('FB_TAB', '//www.facebook.com/example?sk=app_' . APP_ID);

foreach (glob('Facebook/*.php') as $filename) { require_once $filename; }
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookRequestException;if(isset($_SESSION['fb_session']) && !empty($_SESSION['fb_session']))
{
// if already logged print user info
$user_profile = (new FacebookRequest(
$_SESSION['fb_session'], 'GET', '/me'
))->execute()->getGraphObject(GraphUser::className());

echo 'Name: ' . $user_profile->getName(); die;
}
else
{
// otherwise redirect user to login
try {
FacebookSession::setDefaultApplication(APP_ID, APP_SECRET);
$helper = new FacebookRedirectLoginHelper(BASE);
$session = $helper->getSessionFromRedirect();

if($session)
{
// if has token save into session to use later
$_SESSION['fb_session'] = $session;
header('Location: ' . FB_TAB);
}
else
{
// get Facebook login url
echo '<script>top.location.href = "'.$helper->getLoginUrl().'";</script>'; die;
}
}
catch(FacebookRequestException $e) { var_dump($e); }
catch(\Exception $e) { var_dump($e); }
}

Объясняя по шагам:

  1. Когда мы заходим на вкладку Facebook, я проверяю наличие $ _SESSION. Потому что это первый раз, когда я не могу его найти, поэтому я перенаправляю пользователя на страницу входа в Facebook (getLoginUrl).

  2. Когда мы покидаем вкладку страницы, я получаю объект через (getSessionFromRedirect) и сохраняю его в $ _SESSION. Все идет нормально. Проблема заключается в том, что после сохранения $ _SESSION я перенаправляю пользователя обратно на вкладку страницы Facebook (вот где это сложно).

  3. Когда пользователь заходит на вкладку страницы, мы предполагаем, что объект находится внутри $ _SESSION, но его больше нет.

Итак, вопросы …
Используя SDK 4, есть ли способ решить эту проблему? или кто-нибудь знает способ получить информацию о пользователе без этой сессии Facebook?

Спасибо 🙂

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]