Facebook войти на сайт ошибки - PullRequest
       10

Facebook войти на сайт ошибки

0 голосов
/ 12 октября 2011

Когда пользователи приходят на мой сайт, у них есть возможность войти через Facebook.Если они вошли в Facebook и нажали кнопку входа в систему fb, отобразятся все соответствующие диалоги входа в систему.Однако если вы выйдете из Facebook (либо через мой сайт, либо через сам Facebook), а затем попытаетесь снова войти через мой сайт, это приведет вас к Facebook для входа, а затем вернет вас на мой сайт.URL-адрес изменяется с x.net/index.php на x.net/index.php?state = ... набор букв / цифр, но затем не возвращается в диалоговом окне.После этого нажмите кнопку еще раз, и страница обновится с другим (но похожим) URL-адресом и вернет все зарегистрированные диалоги.

Есть идеи как это исправить?

Вот код, который я использую для подключения к Facebook и получения URL для входа и выхода из системы.

//facebook application
$fbconfig['appid' ]     = "myAppId";
$fbconfig['secret']     = "myAppSecret";
$fbconfig['baseurl']    = "http://myNeatSite.net/index.php"; 


if (isset($_GET['request_ids'])){
    //user comes from invitation
    //track them if you need
}

$user            =   null; //facebook user uid
try{
    include_once "facebook.php";
}
catch(Exception $o){
    error_log($o);
}
// Create our Application instance.
$facebook = new Facebook(array(
  'appId'  => $fbconfig['appid'],
  'secret' => $fbconfig['secret'],
  'cookie' => true,
));

//Facebook Authentication part
$user       = $facebook->getUser();


$loginUrl   = $facebook->getLoginUrl(
        array(
            'scope'         => 'email,publish_stream',
            'redirect_uri'  => $fbconfig['baseurl']
        )
);

$logoutUrl  = $facebook->getLogoutUrl();


if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
 $user = null;
  }
}

1 Ответ

0 голосов
/ 13 октября 2011

Насколько я вижу, вы обрабатываете только случай $user не является нулевым (что означает, что пользователь уже вошел в систему), но игнорируете другой случай.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
 $user = null;
  }
}
...