Я перевожу приложение Canvas Facebook из FBML на iframe.
Класс клиента Facebook, который используется для связи с API Facebook, помещается в сеанс HTTP при первом обращении пользователя к моему приложению.Для последующих запросов я извлекаю клиентский объект Facebook, сохраненный в сеансе, и связываюсь с facebook.com с тем же клиентом.
Существует два типа приложений на холсте Facebook, то есть приложения в facebook.com:
- версия FBML
- версия iframe
Версия приложения FBML поддерживает соответствие сеанса, то есть тот же объект сеанса используется приложениемсервер для запросов от того же пользователя Facebook.
Следовательно, я могу извлечь клиент Facebook, помещенный в сеанс, и использовать его, но в случае приложения холста на основе iframe, то есть приложение отображаетсявнутри iframe один и тот же объект сеанса не используется, но каждый раз, когда создается новый сеанс, и, следовательно, клиент Facebook, который я разместил ранее, пропадает.
Сходство сеанса не поддерживается, и новые сеансы продолжают создаваться.При дальнейшей проверке файлов cookie обнаруживается, что файл cookie с именем JSESSIONID недоступен в объекте HttpServletRequest в случае приложения iframe canvas.
Дамп файлов cookie и сеанс, принятый для последовательных запросов из приложения Facebook на мой сервер:
FBML APP:
--------------------Cookies-------------------
JSESSIONID==6E8792ADDF2AF192BF71864C353DE8E5==null
----------------Session-----------------
Session ID : 6E8792ADDF2AF192BF71864C353DE8E5
Creation time : Thu Sep 08 16:36:19 IST 2011
--------------------Cookies-------------------
JSESSIONID==6E8792ADDF2AF192BF71864C353DE8E5==null
----------------Session-----------------
Session ID : 6E8792ADDF2AF192BF71864C353DE8E5
Creation time : Thu Sep 08 16:36:19 IST 2011
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
IFrame App:
---------------------------------------------
--------------------Cookies-------------------
null
----------------Session-----------------
Session ID : D03845C95FC49E79EF7EED1FE8377799
Creation time : Thu Sep 08 16:39:09 IST 2011
--------------------Cookies-------------------
null
----------------Session-----------------
Session ID : 7466CDB69784FA10C570122BC866DB14
Creation time : Thu Sep 08 16:39:19 IST 2011
--------------------Cookies-------------------
null
----------------Session-----------------
Session ID : 4A23EA79AF929E6C2BD4114173AB250F
Creation time : Thu Sep 08 16:39:45 IST 2011
Именно из-за этой проблемы сходство сеанса не поддерживается.Но я не могу понять, почему это происходит.Я использую Struts 2 и простые сервлеты.Решение состоит в том, чтобы позволить приложению iframe canvas поддерживать сходство сессий, то есть возвращать cookie-файл JSESSIONID при каждом запросе.Что мне делать или есть альтернативные решения?