Facebook PHP SDK Ошибка при проверке токена доступа - PullRequest
3 голосов
/ 30 апреля 2011

начиная с thinkdiff.net учебник Я создал простую тестовую страницу (локальный env) со ссылкой для входа / выхода из Facebook. Если я вошел в систему, я хочу отобразить пользовательский интерфейс fb.

Я использую последнюю версию facebook PHP SDK (v.2.1.2) .

Кажется, это работает, но когда я выхожу из системы, я получаю это исключение:

FacebookApiException Object
(
[result:protected] => Array
    (
        [error] => Array
            (
                [type] => OAuthException
                [message] => Error validating access token: The session is invalid because the user logged out or because auth.expireSession was invoked.
            )

    )

[message:protected] => Error validating access token: The session is invalid because the user logged out or because auth.expireSession was invoked.
[string:Exception:private] => 
[code:protected] => 0
[file:protected] => C:\wamp\www\fb\facebook.php
[line:protected] => 543
[trace:Exception:private] => Array
    (
        [0] => Array
            (
                [function] => _graph
                [class] => Facebook
                [type] => ->
                [args] => Array
                    (
                        [0] => /me
                    )

            )

        [1] => Array
            (
                [file] => C:\wamp\www\fb\facebook.php
                [line] => 492
                [function] => call_user_func_array
                [args] => Array
                    (
                        [0] => Array
                            (
                                [0] => Facebook Object
                                    (
                                        [appId:protected] => 1819654718*****
                                        [apiSecret:protected] => a2fccb8e93638b50c8d6b2**********
                                        [session:protected] => 
                                        [signedRequest:protected] => 
                                        [sessionLoaded:protected] => 1
                                        [cookieSupport:protected] => 1
                                        [baseDomain:protected] => 
                                        [fileUploadSupport:protected] => 
                                    )

                                [1] => _graph
                            )

                        [1] => Array
                            (
                                [0] => /me
                            )

                    )

            )

        [2] => Array
            (
                [file] => C:\wamp\www\fb\fb.php
                [line] => 33
                [function] => api
                [class] => Facebook
                [type] => ->
                [args] => Array
                    (
                        [0] => /me
                    )

            )

    )

[previous:Exception:private] => 
)

это код моей тестовой страницы

<code>$fbconfig['appid']  = "18196**********";     
$fbconfig['api']  = "5c6910be575e4e688ac6d**********";     
$fbconfig['secret']  = "a2fccb8e93638b50c8d6b2**********"; 

try
{         
   include_once "facebook.php"; 
}     
catch(Exception $o)
{         
 echo '<pre>';         
 print_r($o);         
 echo '
'; } // Создать наш экземпляр приложения. $ facebook = новый Facebook (массив ('appId' => $ fbconfig ['appid'], 'secret' => $ fbconfig ['secret'], 'cookie' => true)); $ session = $ facebook-> getSession (); $ fbme = null; // Сеансовый вызов API графа. if (! empty ($ session)) { д ($ сессия); пытаться { $ uid = $ facebook-> getUser (); $ fbme = $ facebook-> api ('/ me'); } поймать (FacebookApiException $ e) { д ($ е); } } функция d ($ d) { echo '
';         
print_r($d);         
echo '
'; } если ($ fbme) { $ logoutUrl = $ facebook-> getLogoutUrl (); echo " logout "; д ($ FBME); } еще { $ loginUrl = $ facebook-> getLoginUrl (массив ('req_perms' => 'email, read_stream, user_birthday')); echo " логин "; }

спасибо

Лука

Ответы [ 2 ]

5 голосов
/ 30 апреля 2011

Я бы попытался вручную очистить сеанс при выходе из системы. Поместите параметр GET в возвращаемый URL или используйте другой возвращаемый URL, а затем сделайте следующее:

$facebook->destroySession();

Проблема в том, что cookie-файл сеанса сохраняется даже после выхода пользователя из системы. Когда пользователь возвращается на вашу страницу, вы пытаетесь использовать этот просроченный сеанс для отправки запросов. Удачи.

1 голос
/ 12 ноября 2011

Хороший ответ, Вы должны сначала вызвать destroySession (), прежде чем

facebook->destroySession();

тогда вы можете вызвать getLoginUrl ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...