2012-04-12 1 views
0

나는 서버 측 요청으로부터 60 일 동안 페이스 북 액세스 토큰을 얻으려고합니다. How to extend access token validity since offline_access deprecation 육십일 액세스 토큰을 요청 :Facebook의 확장 액세스 토큰이 작동하지 않습니다.하지만 모든 것이 정상적으로 보입니다 (?)

public function getExtendedAccessToken() { 

     try { 
     // need to circumvent json_decode by calling _oauthRequest 
     // directly, since response isn't JSON format. 
     $access_token_response = 
      $this->_oauthRequest(
       $this->getUrl('graph', '/oauth/access_token'), 
        $params = array( 'client_id' => $this->getAppId(), 
           'client_secret' => $this->getApiSecret(), 
           'grant_type'=>'fb_exchange_token', 
           'fb_exchange_token'=>$this->getAccessToken(), 
       )); 

     } catch (FacebookApiException $e) { 
     // most likely that user very recently revoked authorization. 
     // In any event, we don't have an access token, so say so. 
       return false; 
     } 

     if (empty($access_token_response)) { 
      return false; 
     } 

     $response_params = array(); 
     parse_str($access_token_response, $response_params); 
     if (!isset($response_params['access_token'])) { 
      return false; 
     } 

     return $response_params['access_token']; 
     } 

Unfortunanely을 여전히 사용자가 내가 getAccessToken() 페이스 북 SDK의 기능을 통해 그 후 액세스 토큰을 확인에 loged 후 나는 여기 어딘가에 발견 getExtendedAccessToken는()를 사용 2 시간 후에 내 액세스 토큰이 만료됩니다. 따라서이 또한 시도해 보았습니다.

public function getSimpleExtendedAccessToken(){ 

    $request = 'https://graph.facebook.com/oauth/access_token? 
       client_id='. $this->getAppId(). 
       '&client_secret=' .$this->getApiSecret(). 
       '&grant_type=fb_exchange_token 
       &fb_exchange_token=' .$this->getAccessToken(); 

    $response = file_get_contents($request); 
    $params = null; 
    parse_str($response, $params); 
    return $params['access_token']; 
} 

이 항목도 2 시간 후에 만료됩니다.

어레이

([access_token이 => AAAFM5sO7 [...] => 4897 [만료])로 : I 체크하지만 거기에 쓰여진 제 함수에서 배열 $params 내부 것이었다 getAccessToken()에서 첫 번째, 두 번째 행 getExtendedAccessToken() 하나 getSimpleExtendedAccessToken()에서 세번째 : I는 수신 된 모든 액세스 토큰이 동일한

(그 부분은 "AAAFM5sO7[...]"는 물론 제 액세스 토큰 번호).

확장 액세스 토큰에 대해 addtionaly를 점점 더 많이 요구할 때 만료 번호는 갱신되지 않지만 카운트 다운되며 Facebook 문서의 관점에서 보면 정확합니다. 요청할 수 없기 때문에 매분마다 새로운 액세스 토큰을 얻을 수 있지만 왜 60 일간 액세스 토큰을 얻을 수 없습니까?

내가 조금 흥분했기 때문에 아무도 도와 줄 수 있습니까?

+0

'try' /'catch' 블록에서 오류를 잡을만한 가치가 있습니다. 텍스트 파일에 저장하십시오. 나는 Facebook 샘플에서'error_log ($ e)'를 그냥 사용한다고 생각한다. –

+0

첫 번째 함수'getExtendedAccessToken()'에서 액세스 토큰을 받았기 때문에 false가 아니라'try/cach'의 오류 섹션에 표시되어 있으므로 그렇게 생각하지 않습니다. 또한 두 번째 함수'getSimplyExtendedAccessToken()'은 나에게 유효한 액세스 토큰을 준다.이 두번째 함수는'try/cach' 섹션을 가지고 있지 않다. – Ziemo

+0

... 아무도 어떻게이 문제를 해결하는지 안다 ?? – Ziemo

답변

1

나는 내 자신의 질문에 부분적인 대답이 있습니다. 페이스 북이 확장 토큰을 제공하지 않도록 내 자신의 확장 액세스 토큰 (그리고 나는 앱 소유자)을 받겠다. 그러나 다른 사용자와 함께 시도 할 때 일반 60 일 액세스 토큰을 받는다.