2012-03-08 4 views
0

Facebook 용 iframe 앱을 만드는 데 이상한 문제가 있습니다. 앱이 Go To App (앱으로 이동) 페이지의 무한 루프에서 멈추는 것처럼 보입니다.Facebook PHP SDK 3.1.1 App to page 후 "액세스 토큰 유효성 검사 오류"

사용자가 Go To App 페이지에서 앱을 인증하고 앱으로 돌아 오면/mei api 호출이 "액세스 토큰 유효성 검사 오류"예외를 throw합니다. 내가 확인한 서명 된 요청 (페이스 북 액세스 토큰 디버깅 도구로 테스트)에 유효한 액세스 토큰이 있습니다. setAccessToken() 메서드를 사용하여 설정을 시도했지만 실패했습니다. getUser() 메서드는 성공적으로 사용자 ID를 반환하지만 여전히/mei api 호출시 중단됩니다.

모든 브라우저에서 발생하는 것은 아니지만 Chrome에서 분명히 명확한 패턴이 나타나지 않고 있습니다. P3P 헤더를 사용하여 IE에서 수정했습니다. 그것은 Firefox에서 잘 작동합니다.

나는 꽤 꼼짝 못하고 머리가 빠져 나가기 때문에 어떤 아이디어라도 환영합니다. 고마워.

전체 오류 메시지 : "액세스 토큰 유효성 검사 오류 : www.facebook.com에 로그인하고 주어진 지시 사항을 수행 할 때까지 앱에 액세스 할 수 없습니다."

일부 코드는 아래와 같습니다.

$this->_facebook = new Facebook(
    array(
     'appId' => $this->_config['appId'], 
     'secret' => $this->_config['secret'], 
     'cookie' => true, 
     'fileUpload' => true 
    ) 
); 

$this->_signedRequest = $this->_facebook->getSignedRequest(); 

// Doing something with signed request, not FB related 

$this->_userId = $this->_facebook->getUser(); 

if($this->_userId) { 
    try{ 
     // At this line the "Error validating access token" error shows up 
     $this->_user = $this->_facebook->api('/me'); 

     // Some more irrelevant code here 

    } catch (Exception $e){ 
     $this->_facebook->destroySession(); 
     $this->_facebookLogin(false); 
    } 
} else { 
    $this->_facebook->destroySession(); 
    $this->_facebookLogin(false); 
} 

// The _facebookLogin method 
public function _facebookLogin($perms = 'email,user_birthday,publish_stream,video_upload'){ 
    $data = array(
     'fbconnect' => 0, 
     'redirect_uri' => 'aredirecturl.com' 
    ); 

    if(!empty($perms)) { 
     $data['scope'] = $perms; 
    } 
    echo '<script type="text/javascript">window.top.location.href = "'.$this->_facebook->getLoginUrl($data).'";</script>'; 
    exit; 
} 
+0

전체 코드를 넣을 수 있습니까 (예 :이 공용 함수 _facebookLogin은 잘못된 것입니다. –

+0

). @ 카자 쿠 블라드는 해결책을 찾은 경우 감사합니다. –

답변

0

편집이 부분이

// At this line the "Error validating access token" error shows up 
$this->_user = $this->facebook->api('/me','GET'); 
+0

감사합니다. 대답,하지만 그건 아니야. 내가봤을 때 GET은 그래프 호출의 기본값이므로 이미 사용하고있다. –

0

// At this line the "Error validating access token" error shows up 
$this->_user = $this->_facebook->api('/me'); 

어떤 손으로 세션을 파괴 어떻습니까? 이 매개 변수를 디버깅 했습니까?

unset($_SESSION['fb_'.$YOUR_API_KEY.'_code']); 
unset($_SESSION['fb_'.$YOUR_API_KEY.'_access_token']); 
unset($_SESSION['fb_'.$YOUR_API_KEY.'_user_id']); 
unset($_SESSION['fb_'.$YOUR_API_KEY.'_state']); 

나는 거의 당신과 같은 코드를 사용하고,하지만 난 fileUpload 쿠키 매개 변수를 사용하지 않는.