2010-02-21 2 views
0

Я столкнулся с ошибкой с моим веб-приложением, использующим подключение к Facebook, которое происходит, когда у пользователя открываются как мои веб-приложения, так и Facebook.com, и выходит из Facebook.com. Поскольку мое приложение и библиотека Facebook Connect не знают, что сеанс больше недействителен, когда он пытается использовать определенные функции Facebook Connect, требующие действительного сеанса, я получаю сообщение «FacebookRestClientException» с сообщением «Сессионный ключ недействителен или недействителен. ' Просто интересно, что лучше всего подходит для обработки этого случая для приложения php.Обработка входа пользователя на Facebook Connect

Из Googling Я обнаружил, что есть функция JS, которая связывает сервер Facebook, чтобы узнать, зарегистрирован ли пользователь, но мне нужно решение на стороне сервера.

ответ

1

использование:

$fb_user=$facebook->get_loggedin_user(); 

это расскажет вам facebook_uid вошедшего в систему пользователя или возвращать ложь, если не вошли в

пример:.

$fb_user=$facebook->get_loggedin_user(); 

if($fb_user) 
{ 
    try{ 
     $setstatus = $facebook->api_client->users_setStatus(
      $status, 
      $facebook_uid 
      ); 
     echo 'status has been updated'; 
    }catch (Exception $e) { 
     if($e->getCode() === 102) 
     { 
      // user is not logged in 
      echo 'you must log in to update your status'; 
     } 
     log_error($e->getMessage()); // log your error so you can fix it if you need to 
    } 
}else{ 
    echo 'you must log in'; 
} 
+0

Я считаю, что это значение установлено и сохраняется в объекте Facebook на стороне сервера, который не знает, что пользователь вышел из Facebook.com, поэтому он вернет facebook_uid, даже если пользователь действительно выйдет из системы. Я попробовал это на всякий случай, и это не сработает ... – jhchen

+0

В этом случае вы можете поймать ошибку, проверить ее на возврат. Глядя на мой журнал ошибок, я вижу, что в качестве возврата отображается «Сессионный ключ недействителен или больше не действителен». Вы можете проверить это. – Jayrox

+0

Facebook возвращается: ошибка: 102 константа: API_EC_PARAM_SESSION_KEY Описание: ключ сеанса недействительным или не более недействителен на всех методах, если сеанс является недействительным – Jayrox

0

Так как я использую CodeIgniter в мой проект, я использую this library, чтобы сделать Facebook Connect. Я просто следую примеру кода из Facebook. Затем я просто следую flow here и a guide here. При выходе из системы я также выхожу из Facebook, иначе сеанс Facebook может быть повторно обнаружен моим приложением, а пользователь зашел в систему.

Смежные вопросы