0

question2answer (지식 불필요)에 대한 플러그인을 작성하려고합니다. 새로운 질문이 게시되면 해당 질문을 페이스 북 페이지의 활동으로 게시합니다. 이것을 달성하는 것은 문제가되지 않습니다. 내가 겪는 것은 끈기입니다.Php Facebook API 페이지 액세스 토큰

제가 잘못 이해 한 경우, 제가 잘못 생각한 경우 관리자 사용자의 계정을 통해서만 페이지에 대한 액세스 토큰을 직접 얻을 수 있다는 것입니다. 이로 인해 우리가 저장 한 액세스 토큰이 로그 아웃 된 페이지의 관리자가 만료 될 때 게시에 문제가 발생합니다. 글쎄, 우리가 영원히 계속 로그인 할 것으로 기대하지는 않겠지?

이 문제를 해결할 다른 방법이 있습니까? 사용자가 해당 페이지에 대신 게시하도록하는 것과 같은가?

다음은 현재 사용하고있는 코드입니다 (최종적인 것이 아니라 오류 처리가 아닙니다). 내가 추측 문제를 해결할 것이다 당신은 당신의 팬 페이지에 대한 절대 만료되지 토큰을 가질 수

$facebook2 = new Facebook(array(
                'appId' => qa_opt('facebook_app_id'), 
                'secret' => qa_opt('facebook_secret') 

         )); 

         $facebook2->setAccessToken(qa_opt('facebook_page_access_code')); 

         // Try to extend token 
         $access_token = $facebook2->getExtendedAccessToken(); 



         // As is, with the extended token, we currently post as the user, not the page. Let's fix that 
         $accounts = $facebook->api('/me/accounts?access_token='.$access_token); 
         foreach ($accounts as $account) 
         { 
          if ($account['id'] == qa_opt('facebook_page_id')) 
          { 
           $page_access_token = $account['access_token']; 
           break; // Stop processing foreach 
          } 

         } 

         $fbPageArgs = array('access_token' => $page_access_token, 
            'message' => 'A new question has been created!', 
            'link' => qa_q_path($params['postid'], $params['title'], true), 
            'name' => $params['title'], 
            'description' => $params['text'] 
         ); 

         $facebook2->api("/".qa_opt('facebook_page_id')."/feed?fields=access_token","post",$fbPageArgs); 
+0

누구나 아이디어가 있으십니까? 분명히 누군가가이 문제에 뛰어 들었다. – Eric

답변

3

question2answer 데이터베이스에 저장 뭔가, 그냥 qa_opt 말한다 아무것도.

는 간단한 단계를 수행합니다. (즉 당신의)

  1. 은 관리자의 확장 토큰 (2 개월 유효)을 가져옵니다. 링크를 통해 long-lived token을 얻으십시오.

    Extending tokens

  2. token-

    $facebook->api("/PAGE_ID?fields=access_token"); 
    

이 (당신은 토큰의 유효성을 확인하는 Facebook's Debug Tool을 사용할 수 있습니다)를 사용하여 모든 페이지에 대해 결코 만료되지 액세스 토큰을 가져옵니다.

+0

우리가 로그 아웃 할 때 연결이 끊어지지 않도록하기 위해 노력한 사람이 있지만 새로운 모든 질문은 여전히 ​​관리자가 아닌 페이지 자체에 게시합니다. 나는 그것을 할 수있는 방법을 찾을 수없는 것 같습니다, 지금. – Eric

+0

유용한 정보입니다. http://stackoverflow.com/a/7649048/1343690 –