Доступ к сеансу Facebook с помощью PHP - PullRequest
3 голосов
/ 16 января 2012

Я изо всех сил стараюсь поддерживать сессию Facebook, используя PHP на моем сайте.

Я использую JavaScript SDK и PHP SDK, чтобы сформировать основу моего приложения.

Проблема, с которой я столкнулся, заключается в том, что, когда «сессия Facebook» заканчивается, мой PHP-скрипт считает, что вы вышли из Facebook. Но как только я вызываю FB.init() с помощью JavaScript SDK, сессия возвращается к жизни.

Есть ли способ добиться того же с помощью PHP SDK? Или я могу установить пользовательское время истечения в сеансе Facebook?

Извлечено из комментариев

Кажется, что время истечения сеанса установлено на 2 часа, но я не уверен в этом. Я не думаю, что вызов PHP API будет иметь значение. Мне нужно объяснить немного яснее, что происходит. По сути, если вы попадаете на мою домашнюю страницу, вы получаете возможность войти через Facebook. Если вы делаете, это все работает отлично! После того, как вы вошли в систему и авторизовали приложение, все в порядке, пока не закончится сеанс. Когда сеанс истекает, кажется, что PHP SDK не может определить, вошли ли вы в систему через Facebook, однако Javascript SDK есть. Я использую getUser () для PHP SDK.

Другими словами, поскольку сеанс истек, PHP думает, что вы больше не авторизованы через Facebook. Javascript SDK может определить, вошли ли вы в систему или нет, независимо от того, существует ли сеанс. Когда он понимает, что вы есть, он воссоздает сеанс в любом случае. Но для того, чтобы сессия была подхвачена PHP, страница должна быть обновлена. У меня проблема, потому что на странице отображается контент, основанный на вашем логине на Facebook, мне нужен PHP SDK, чтобы также можно было воссоздать сеанс, чтобы не было необходимости обновлять страницу.

1 Ответ

0 голосов
/ 16 января 2012

Хорошо ... Не знаю, какие именно детали вашей сессии ведут себя так - я должен также сказать, что я не очень хорошо разбираюсь в сессиях PHP и не имею большого опыта работы с ними.

Мое предложение состояло бы в том, чтобы позволить SDK JavaScript выполнить свою работу ... позволить ему "повторно обнаружить" ваш сеанс и после этого сделать AJAX-вызов на ваш сервер. При обработке этого вызова вы можете создать и заново запустить PHP SDK, а значит, возобновить сеанс.

Кроме того, вы можете периодически вызывать FB.getAuthResponse , чтобы убедиться, что сеанс пользователя все еще действителен (по крайней мере, в JavaScript SDK).

Из документации Fb.getLoginStatus () :

{
    status: 'connected',
    authResponse: {
        accessToken: '...',
        expiresIn:'...',
        signedRequest:'...',
        userID:'...'
} }

Проверяя наличие объекта authResponse внутри объект ответа, вы можете быть уверены, что пользователь известен вашему приложению, а вы может начать делать дальнейшие звонки в API Facebook. Если объект authResponse отсутствует, пользователь либо не вошел в систему Facebook, или не авторизовал ваше приложение.

...