Facebook 기반 캔버스 응용 프로그램을 FBML에서 iframe 기반으로 마이그레이션하고 있습니다.캔버스의 IFrame에서 HTTP 요청으로 세션 선호도가 유지되지 않습니다. Facebook 응용 프로그램
Facebook API와 통신하는 데 사용되는 Facebook 클라이언트 클래스는 처음 사용자가 내 애플리케이션에 액세스 할 때 HTTP 세션에 배치됩니다. 후속 요청의 경우 세션에 저장된 Facebook 클라이언트 객체를 검색하고 동일한 클라이언트로 facebook.com과 통신합니다.
즉 페이스 북 캔버스 애플리케이션의 두 가지 유형, 응용 프로그램이 facebook.com에서있다 :
- FBML 버전은
- iframe이 버전은
응용 프로그램의 FBML 버전은 세션을 유지 즉, 동일한 세션 객체가 동일한 Facebook 사용자의 요청에 대해 응용 프로그램 서버에 의해 사용됩니다.
따라서 세션에 배치 된 Facebook 클라이언트를 가져 와서 사용할 수 있지만 iframe 기반 캔버스 애플리케이션의 경우 iframe 내에 애플리케이션이 표시되고 동일한 세션 객체가 표시되지 않습니다. 사용되었지만 새로운 세션이 생성 될 때마다 앞에서 배치 한 Facebook 클라이언트가 사라집니다.
세션 선호도가 유지되지 않고 새 세션이 계속 생성됩니다. 쿠키를 자세히 조사하면 iframe 캔버스 응용 프로그램의 경우 HttpServletRequest 객체에서 JSESSIONID라는 쿠키를 사용할 수 없다는 것을 알 수 있습니다. 내 서버에 페이스 북 응용 프로그램에서 연속적인 요청을 촬영 쿠키 및 세션의
덤프 :
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 캔버스 응용 프로그램이 세션 선호도를 유지할 수있게하는 것입니다. 즉, 요청마다 JSESSIONID 쿠키를 반환하는 것입니다. 어떻게해야합니까? 아니면 대체 솔루션이 있습니까?
당신이 무엇을 요구하는지 이해하기가 어렵습니다. 코드에서 문제를 표현할 수 있다면 아마도 psudo 코드로도 도움이 될 것입니다. 또한 이것을위한 '해결책'이 무엇인지 명확하게 기술하십시오. 한 번에 한 그룹의 문제를 해결할 수있는 질문을 설정하면 도움이됩니다 (잠재적 인 잠재 고객을 나누기보다는 확장합니다). – Quaternion
@Quatenion 알려 주셔서 감사합니다. 나는 질문을 다시 썼다. 지금은 그것이 이해할 수 있음을 알린다. – Ramasubramanian
+1 많이 개선되었습니다. – Quaternion