2010-12-17 4 views
7

저는 페이스 북 앱을 개발 중입니다. Stragnly, 앱은 대부분의 브라우저에서 잘 작동합니다 (FF, 크롬 및 사파리에서 테스트 한 결과 모든 브라우저에서 정상적으로 작동했습니다).Facebook 앱은 IE8이 아닌 모든 브라우저에서 작동합니다.

protected function _restserver($params) { 
    // generic application level parameters 
    $params['api_key'] = $this->getAppId(); 
    $params['format'] = 'json-strings'; 

    $result = json_decode($this->_oauthRequest(
    $this->getApiUrl($params['method']), 
    $params 
), true); 

    // results are returned, errors are thrown 
    if (is_array($result) && isset($result['error_code'])) { 
    throw new FacebookApiException($result); 
    } 
    return $result; 
} 

: 나는 IE8에서 테스트 그러나 때, 나는 페이지 중 하나에 아약스 호출을 만들려고이 오류 메시지 수신 : facebook.php에 라인 (515)을 포함하는보다 기능이

Fatal error: Uncaught Exception: 102: Requires user session thrown in 
/home1/website/public_html/facebook/src/facebook.php on line 515 

이입니다 내 생각 엔 세션이나 IE8 설정으로 수행 할 수 있지만이 문제를 해결하는 방법을 모르겠습니다.

답변

22

은 PHP 파일의 상단에이 헤더를 추가하는 시도 :

<?php 
    header('p3p: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"'); 
?> 

이 크로스 도메인을 만들 것입니다 AJAX는 IE에서 작업을 호출

편집 : 긴 정답 사실

다음과 같습니다 :

IFrame Canvas 앱 (또는 다른 iframe에서 페이지에 호스팅 된 다른 iframe을 개발할 때 일부 도메인 (기본 IE 구성)에서는 쿠키 (제 3 자 쿠키라고 함)에 대한 액세스가 제한됩니다. Firefox, Chrome, Safari, Opera는 예상대로 작동하지만 IE는이 쿠키에 대한 액세스를 차단합니다. (P3P Compact Privacy Policy라고하는)이 헤더가 존재하면 IE가 다른 도메인의 쿠키를 허용하게됩니다.

그러면 세션 코드가 어떻게 작동합니까 ???

서버의 세션 정보를 유지하기 위해 페이지는 클라이언트에 저장된 세션 쿠키를 발급합니다. iframe에서 세션을 사용하는 경우 브라우저에서 쿠키를 저장할 수 있어야합니다.

쿠키를 저장하지 않으면 세션이 손실되고 세션 기반 코드가 게시 된 것처럼 실패합니다.

희망이 도움이됩니다.

PS : BTW p3p 헤더의 모든 이상한 약어가 무엇인지 전혀 알지 못합니다. 나는 그것의 많은 변이가 당신을 그것에 관하여 조금 더 많은 것을 조사하는 것을 시도해야한다 그래야 작동했다는 것을 보았다

+2

와우. 이것은 확실히 하나의 불가사의 한 선이다. 완벽하게 작동했습니다 (IE8을 닫아서 Ajax 메시지를 새로 고쳐야했습니다). 이 라인은 무엇을합니까? – khr2003

+0

내 대답을 편집하여 내용을 설명 드리겠습니다 –

+2

설명해 주셔서 대단히 감사드립니다. 나는 약간의 연구를했고 이상한 두문자어를 설명하는 링크가있다 : http://www.p3pwriter.com/LRN_111.asp – khr2003

0

당신이 마이크로 소프트 .net 플래트 홈에 달리는 경우에, 당신은 IIS에있는 P3P 우두머리를 놓을 수있다.

다음 링크를 참조하십시오. 그러나 정책 XML 파일을 가져야한다는 내용은 건너 뛰고 헤더를 추가하는 방법으로 넘어갈 수 있습니다!

http://support.microsoft.com/kb/324013

+0

P3P 헤더를 추가하면 모든 쿠키 문제가 해결 될 것이라고 생각하지 않도록주의를 기울이고 싶습니다.Internet Explorer의 일반적인 시나리오에서 작동하지만 타사 쿠키가 브라우저 보안 설정이나 추가 기능 쿠키 관리자에 의해 명시 적으로 비활성화 된 경우 P3P 헤더가 있으면 아무런 차이가 없습니다. iframe 앱에서 쿠키를 사용하면 항상 여기저기서 몇 명의 사용자를 잃게됩니다. 다행히도 많지는 않지만 항상 그렇습니다. 허용되지 않는 경우 쿠키를 사용하지 마십시오. –

관련 문제