2013-03-07 3 views
1

나는 메시지 (상태 업데이트, 링크, 사진 및 비디오)를 여러 페이지에 게시 할 수있는 간단한 Facebook 페이지 탭 응용 프로그램을 작성 중입니다.페이 스북 게시물 페이지로 링크 문제

페이지의 타임 라인에 다양한 것을 게시하려고하는 PHP API 사용 문제가 있습니다.

상태 업데이트를 게시하면 페이지 이름 아래에 성공적으로 게시됩니다.

$pages = $this->facebook->api('me/accounts', 'GET'); 
    $pages = json_decode(json_encode($pages), FALSE); 

    foreach ($pages->data as $page) { 
     if (in_array($page->id, $_POST['pages'])) { 

      $data = array(
       'access_token' => $page->access_token, 
       'message' => Arr::get('status', $_POST) 
      ); 

      $queryString = http_build_query($data); 

      $this->facebook->api("$page->id/feed?".$queryString, 'POST'); 
     } 
    } 

가 곧 나는 더 이상 매개 변수 포스트 내 관리자 계정에서 만든 (링크를 게시하는 즉, 시도)를 추가로 (즉, 크리스 헤이즈 '페이지 X'에 대한 링크를 게시).

$pages = $this->facebook->api('me/accounts', 'GET'); 
    $pages = json_decode(json_encode($pages), FALSE); 

    foreach ($pages->data as $page) { 
     if (in_array($page->id, $_POST['pages'])) { 

      $data = array(
       'access_token' => $page->access_token, 
       'link' => Arr::get('link', $_POST), 
       'message' => Arr::get('status', $_POST) 
      ); 

      $queryString = http_build_query($data); 

      $this->facebook->api("$page->id/feed?".$queryString, 'POST'); 
     } 
    } 

나는 여기서 무슨 일이 일어나는 지 잘 모릅니다. 말 그대로 '링크'매개 변수를 추가하는 것만 변경되었습니다. 누구든지 나를 도울 수 있다면 크게 감사하겠습니다!

편집 내가 획득 한 권한은 다음과 같습니다 이메일, user_about_me, user_likes, user_birthday, manage_pages, publish_stream

감사합니다, 크리스

+0

먼저 사용 된 실제 access_token은을 작성하고 디버그 도구를 통해 넣어 : HTTPS

API 호출의 세 번째 매개 변수로 나는 줄을 제거 할 수 있었다의 데이터를 송신 한 후 : //developers.facebook.com/tools/debug – CBroe

+0

다음 퍼마와 함께 내 앱의 액세스 토큰입니다 (다음 시간 동안 유효 함). create_note email manage_pages photo_upload publish_actions publish_stream share_item status_update user_about_me user_birthday user_likes video_upload. 내 사용자 ID가 관련되어 있습니까? –

+0

아니요, 그렇게해서는 안됩니다. 사용자로 게시하는 대신 페이지로 게시하고 싶지는 않습니다. 그래서 페이지 액세스 토큰을 얻으십시오. – CBroe

답변

0

내가 다른 게시물에 대한 답을 발견했다.

$pages = $this->facebook->api('me/accounts', 'GET'); 
    $pages = json_decode(json_encode($pages), FALSE); 

    foreach ($pages->data as $page) { 
     if (in_array($page->id, $_POST['pages'])) { 

      $this->facebook->setAccessToken($page->access_token); 

      $data = array(
       'access_token' => $page->access_token, 
       'name' => 'Facebook API: Posting As A Page', 
       'link' => 'https://www.webniraj.com/2012/08/09/facebook-api-posting-as-a-page/', 
       'caption' => 'The Facebook API lets you post to Pages you own automatically - either as real-time updates or in the case that you want to schedule posts.', 
       'message' => 'Check out my new blog post!' 
      ); 

      $queryString = http_build_query($data); 

      $this->facebook->api("$page->id/feed?".$queryString, 'POST'); 
     } 
    } 

핵심은 Facebook SDK를 통해 페이지 액세스 토큰을 설정하는 것이 었습니다. 다른 위치에서 라이브러리를 사용하여 액세스 토큰을 사용자의 것으로 설정했기 때문일 수 있습니다. 라이브러리가 매개 변수로 전송 된 토큰을 무시해야한다고 생각합니다.

$this->facebook->setAccessToken($page->access_token); 

참조 :Posting to a Facebook Page as the Page (not a person)


편집 : 난 그냥 발견 한 또 다른 문제는 내가 지금처럼 쿼리 문자열에게 자신을 구축하고 API 엔드 포인트에 추가 된 점이다

$this->facebook->api("$page->id/feed?".$queryString, 'POST'); 

당신이해야 할 일은 $ 데이터 배열을 th API 호출의 IRD 매개 변수 :

$this->facebook->api("$page->id/feed", 'POST', $data); 

PHP의 SDK는 $ 데이터의 'access_token은'매개 변수를 찾습니다, 나는 그 배열에 전송되지 않았기 때문에 그것을 발견 (따라서, 기본값은되지 않았다 이전에 설정했던 내 사용자 액세스 토큰 사용). ,

$this->facebook->setAccessToken($page->access_token); 
관련 문제