Доступ к сеансу Facebook через PHP

Я изо всех сил пытаюсь сохранить сеанс Facebook с помощью PHP на своем веб-сайте.

Я использую как SDK JavaScript, так и 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, чтобы иметь возможность воссоздать сеанс, так что нет необходимости обновлять страницу.

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

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

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

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

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

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