2011-09-08 2 views
0

Facebook 기반 캔버스 응용 프로그램을 FBML에서 iframe 기반으로 마이그레이션하고 있습니다.캔버스의 IFrame에서 HTTP 요청으로 세션 선호도가 유지되지 않습니다. Facebook 응용 프로그램

Facebook API와 통신하는 데 사용되는 Facebook 클라이언트 클래스는 처음 사용자가 내 애플리케이션에 액세스 할 때 HTTP 세션에 배치됩니다. 후속 요청의 경우 세션에 저장된 Facebook 클라이언트 객체를 검색하고 동일한 클라이언트로 facebook.com과 통신합니다.

즉 페이스 북 캔버스 애플리케이션의 두 가지 유형, 응용 프로그램이 facebook.com에서있다 :

  1. FBML 버전은
  2. 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 쿠키를 반환하는 것입니다. 어떻게해야합니까? 아니면 대체 솔루션이 있습니까?

+0

당신이 무엇을 요구하는지 이해하기가 어렵습니다. 코드에서 문제를 표현할 수 있다면 아마도 psudo 코드로도 도움이 될 것입니다. 또한 이것을위한 '해결책'이 무엇인지 명확하게 기술하십시오. 한 번에 한 그룹의 문제를 해결할 수있는 질문을 설정하면 도움이됩니다 (잠재적 인 잠재 고객을 나누기보다는 확장합니다). – Quaternion

+0

@Quatenion 알려 주셔서 감사합니다. 나는 질문을 다시 썼다. 지금은 그것이 이해할 수 있음을 알린다. – Ramasubramanian

+0

+1 많이 개선되었습니다. – Quaternion

답변

0

iframe에서 세션 쿠키를 유지하려면 HTTP 헤더 P3P을 추가해야합니다. 나는 정확한 값을 모르지만, 인터넷에서 발견 된 다음은 나를 위해 일했다.

httpResponse.setHeader("P3P","CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'"); 
관련 문제