2012-12-20 2 views
0

사용자가 이미지를 페이지의 앨범에 업로드 할 수 있도록 앱을 개발했습니다. 사용자가 권한을 부여하지 않기를 바라고 앱의 액세스 토큰을 사용하여 이미지를 업로드했습니다. 관리자가 로그인되어 있고 액세스 토큰이 만료되지 않은 경우이 작업이 정상적으로 작동합니다. 단지 몇 시간 동안 지속되는 것으로 보입니다. 나는 stackoverflow 및 facebook을 통해 보았고 여러 가지를 시도했지만 아무 것도 작동하지 않는 것 같습니다. 다음은 내가 사용하는 코드 중 일부입니다 :Facebook 액세스 토큰이 만료되어 내 앱이 작동하지 않음

try { 
     $facebook->setAccessToken("APP_ACCESS_TOKEN_FROM_GRAPH_API_TOOL"); 
     $token_url="https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=".$facebook->getAccessToken(); 
     $page_id = 'PAGE_ID'; 
     $response = file_get_contents($token_url); 
     $params = null; 
     parse_str($response, $params); 
     $page_info['access_token'] = $params['access_token']; 
     $page_info = $facebook->api("/".$page_id."?fields=access_token"); 
     if(!empty($page_info['access_token'])) { 
      $photo_details['access_token'] = $page_info['access_token']; 
      $upload_photo = $facebook->api('/'.$page_id.'/photos', 'post', $photo_details); 

나는 꿈꿔? 이것이 가능하고 코드를 망쳤습니다. 어떤 도움도 올바른 방향으로 나를 가리키게 될 것입니다 ...

+0

어떻게 페이지 관리자로 로그인 하시겠습니까? 클라이언트 측 또는 서버 측 Oauth 흐름을 사용하고 있습니까? 관리자를 위해 서버 측 흐름을 사용하여 60 일 토큰을 얻은 다음'/ accounts' 엔드 포인트를 사용하여 페이지 액세스 토큰을 가져 오면 페이지 액세스 토큰은 무한이어야합니다 – Igy

+0

php-sdk를 사용하고 있습니다. 나는 서버 측을 사용할 것입니다 ... 현재 시도한 후 처음 2 줄 이외의 oauth 흐름은 없습니다. setAccessToken은 admin/app에서 access_token을 가져 와서 그래프 API 호출에서 바로 사용합니다. – user1896369

+0

서버 측 흐름을 사용하는 경우 페이지 관리를 위해 얻은 토큰은 60 일이어야하며 '/ /accounts'에서 검색하는 페이지 액세스 토큰은 무한해야합니다. 작동하지 않는 경우, 강제로 앱을 제거한 다음 ('/ me/permissions? method = delete & access_token = XXX') 다시 설치하고 작동하는지 확인하십시오. – Igy

답변

0

현재 귀하의 코드는 응용 프로그램 액세스 토큰이 아닌 사용자 고유의 액세스 토큰을 사용합니다. 구현에 https://developers.facebook.com/docs/technical-guides/opengraph/publishing-with-app-token/

문서화, 및 APP_SECRET 및 APP_ID는 상수로 정의된다고 가정으로

이 응용 프로그램 액세스 토큰을 얻으려면, 당신은 https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials에 GET 요청을해야, 당신은 응용 프로그램에 대한 액세스를 얻을 것 토큰을 통해 :

$appAccessToken = str_replace("access_token=","",$facebook->api("https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials")); 
$facebook->setAccessToken($appAccessToken); 
관련 문제