0

Когда сеанс Facebook истекает с моим приложением, я должен использовать Javascript SDK для создания нового сеанса. Это очень раздражает, поскольку пользователю кажется, что они выходят из системы изредка, поскольку я делаю большую часть стороны сервера обнаружения. И затем, когда они перезагружают страницу и выполняется javascript, сеанс воссоздается.Почему PHP SDK не может установить сеанс Facebook?

Я знаю, что могу исправить это довольно просто, используя javascript, чтобы показать сообщение «пожалуйста, перезагрузите страницу» (как и StackOverflow), однако я не хочу, чтобы мои пользователи должны были это делать. Я согласен с тем, что PHP SDK не может этого сделать, но есть ли какой-то хак, который я могу сделать для его самого, используя PHP вместо Javascript?

Может ли кто-нибудь объяснить, почему PHP не может этого сделать?

ответ

1

PHP работает на вашем сервере, что не имеет ничего общего с серверами Facebook. Помните, что файлы cookie заблокированы в исходном домене. Файл cookie будет установлен вашим сервером и имеет исходный домен «yoursite.com», а не «facebook.com».

JS, с другой стороны, работает на клиенте, и любые запросы, сделанные на серверы Facebook, также будут подчиняться любым файлам cookie, установленным серверами Facebook.

+0

Может ли PHP не использовать curl или file_get_contents для запроса страницы PHP, которая устанавливает cookie? Или файлы cookie не включаются в эти заголовки? –

+1

Вы можете выполнять любые операции с файлами cookie, но любые файлы cookie, отправляемые вашим клиентом клиенту, будут заблокированы в домене вашего сервера. Ваш сервер не может установить файл cookie в facebook, который фактически будет отправляться на серверы facebook, потому что cookie будет отправлен только на BACK на ваш сервер. Если бы это было возможно, было бы тривиально, если бы вы украли/установили файлы cookie на банковском веб-сайте пользователя (например) –

+0

Нет. Я полностью понимаю это, я не это имел в виду. Домен в facebook должен установить cookie для facebook, это здравый смысл. Я имею в виду, может ли мой сервер вызвать страницу в домене facebook с помощью одной из вышеупомянутых функций, чтобы в результате установить файл cookie facebook с сервера facebook? Например file_get_contents (facebook.com/cookie.php)? Или это не сработает, потому что оно все еще приходит с моего сервера? –