Кнопка входа в Facebook работает только при втором щелчке

Я использую класс php facebook и помещаю кнопку входа на мою страницу с помощью $f->getLoginUrl() , проблема в том, что эта кнопка не работает в первый раз, когда я нажимаю на нее. Он делает то, что должен и возвращается на мой сайт, но $f->getUser() пуст. Странно, когда я нажимаю кнопку второй раз, тогда он работает безупречно.

 $facebook = new Facebook(array( 'appId' => '25317735807xxxx', 'secret' => '37e5dd05657f2cc2a1bdc9974985xxxx', 'redirURL' => 'http://mysite.com/', )); $fb_login = '<a href="' . $facebook->getLoginUrl() . '" class="fb-login-button"><img src="img/fb-login-button.png" border="0" /></a>'; $fb_user = $facebook->getUser(); $user_level = 4; if($page_access[$glob['pag']]['session']) { session_start(); } if ($_SESSION[U_ID]) { $user_level = $_SESSION['access_level']; require_once("classes/cls_auth.php"); $auth = new auth(); $show_connect_alert = $auth->check_connection(); if($glob['pag'] == 'register' && $_SESSION[U_ID]) { $glob['pag'] = 'profile'; } } else { //check if fb session exists if ($fb_user) { try { $db = new mysql_db(); $db->query("SELECT email, password FROM member WHERE fb_id = $fb_user"); if ($db->move_next()) { $glob['email'] = $db->f('email'); $glob['password'] = $db->f('password'); require_once("classes/cls_auth.php"); $auth = new auth(); $auth->login($glob); } else { $user_profile = $facebook->api('/me'); $glob['pag'] = "fboptions"; } } catch (FacebookApiException $e) { $glob['fb-error'] = $e; unset($fb_user); $user_level = 4; } } else { // check login cookie if(isset($_COOKIE['stagescan'])) { list($arr['email'], $arr['password']) = explode(",", $_COOKIE['stagescan']); require_once("classes/cls_auth.php"); $auth = new auth(); if(!$auth->login($arr)) { setcookie('stagescan', "", time()-3600, "http://mysite.com/"); } else { $glob['debug'] = "User logged in from cookie"; } } else { $user_level = 4; } } } с $facebook = new Facebook(array( 'appId' => '25317735807xxxx', 'secret' => '37e5dd05657f2cc2a1bdc9974985xxxx', 'redirURL' => 'http://mysite.com/', )); $fb_login = '<a href="' . $facebook->getLoginUrl() . '" class="fb-login-button"><img src="img/fb-login-button.png" border="0" /></a>'; $fb_user = $facebook->getUser(); $user_level = 4; if($page_access[$glob['pag']]['session']) { session_start(); } if ($_SESSION[U_ID]) { $user_level = $_SESSION['access_level']; require_once("classes/cls_auth.php"); $auth = new auth(); $show_connect_alert = $auth->check_connection(); if($glob['pag'] == 'register' && $_SESSION[U_ID]) { $glob['pag'] = 'profile'; } } else { //check if fb session exists if ($fb_user) { try { $db = new mysql_db(); $db->query("SELECT email, password FROM member WHERE fb_id = $fb_user"); if ($db->move_next()) { $glob['email'] = $db->f('email'); $glob['password'] = $db->f('password'); require_once("classes/cls_auth.php"); $auth = new auth(); $auth->login($glob); } else { $user_profile = $facebook->api('/me'); $glob['pag'] = "fboptions"; } } catch (FacebookApiException $e) { $glob['fb-error'] = $e; unset($fb_user); $user_level = 4; } } else { // check login cookie if(isset($_COOKIE['stagescan'])) { list($arr['email'], $arr['password']) = explode(",", $_COOKIE['stagescan']); require_once("classes/cls_auth.php"); $auth = new auth(); if(!$auth->login($arr)) { setcookie('stagescan', "", time()-3600, "http://mysite.com/"); } else { $glob['debug'] = "User logged in from cookie"; } } else { $user_level = 4; } } } 

Добавили ли вы стандартные обработчики FB в свою часть javascript? Они должны перезагрузить страницу и установить некоторые файлы cookie для API facebook для работы …

 <!-- FACEBOOK JAVASCRIPT HANDLER START --> <div id="fb-root"></div> <script> window.fbAsyncInit = function() { FB.init({ appId: '%CONTEST_FACEBOOKAPPID%', cookie: true, xfbml: true, oauth: true }); FB.Event.subscribe('auth.login', function(response) { window.location.reload(); }); FB.Event.subscribe('auth.logout', function(response) { window.location.reload(); }); }; (function() { var e = document.createElement('script'); e.async = true; e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; document.getElementById('fb-root').appendChild(e); }()); </script> <!-- FACEBOOK JAVASCRIPT HANDLER END -->