본문 바로가기

컴터/기타

*** 페이스북 API 메인으로 전송이 아니고 팬페이지로 전송하기-퍼미션

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


2016.03.30-php-v5-sample.zip



(keyword : facebook-api-posting-as-a-page,  facebook-api-publish-to-page or fan page, 퍼미션,permission, 페이스북 페이지, facebook page)


참고 : https://www.webniraj.com/2012/08/09/facebook-api-posting-as-a-page/



- 해당 팬페이지 page id 와 access_token 얻기

: 메인 페이스북으로 보내는 access_token 과 팬페이지로 보내는 token이 다르기 때문에 다시 찾아야 함


https://developers.facebook.com/tools/explorer/ 에서 접속 토큰얻고, graphic api 선택후 /me/accounts 입력후 submit

(상단 Graph API explorer 쪽에서 앱을 맞게 선택해야함)


(방법 2. 페이지 접속 > 오른쪽 상단 "설정" 클릭 > 왼쪽 "페이지정보(page info)" > 최하단 "Facebook 페이지 ID" 숫자)



그러면 그림 처럼 자기 계정의 팬페이지가 나오는데 그곳의 access_token 과 id를 사용하여 api 보내면 됨.

(저 api 를 이용해 select 하여 보내게 할수도.)


* base_facebook.php, facebook.php 기준


$message = array(''=>,''=>'' ... 기타등등);

$message['access_token'] = '위에서 새로얻은 팬페이지의 토큰';

$status = $sns->api("/팬페이지의 ID/feed", "POST", $message);

-> 이방법은 유효기간이 60days 정도라고 함(정확한 정보 아님). 갱신기간이 지났을 경우대비하여

세션으로 처리하도록함


function getPageToken(){

$facebook = new ~~~(.. ,..);

$res=$facebook->api("/me/accounts");

foreach($res['data'] as $v){

if($v['id'] == 'page id'){

return $v['access_token'];

}

}

return '';

}


// 처음 페이지 만들때 만들고

$_SESSION['page_token'] = $_SESSION['page_token'] ? $_SESSION['page_token'] getPageToken(); 


$message = array(''=>,''=>'' ... 기타등등);

$message['access_token'] = $_SESSOION['page_token'];

$status = $sns->api("/팬페이지의 ID/feed", "POST", $message);




---> v2.5 로 오면서 바뀐듯..


https://www.daniweb.com/programming/web-development/threads/498037/facebook-php-sdk-v5-errors-on-posting-into-facebook-page


$fb = new Facebook([

      "app_id" => $api_id,

      "app_secret" => $api_secret,

      "default_graph_version" => "v2.2",

      ]);


$pageTokens = $fb->get('/me/accounts?fields=id,name,access_token')

                 ->getGraphEdge()

                 ->asArray();


foreach($pageTokens as $key => $value)

{

    # match page ID

    if($value['id'] == 357971644373038)

    {

        $pageToken = $value['access_token'];

        break;

    }


}


$response = $fb->post('/357971644373038/feed', $linkData, $pageToken);




- 14.07.28 추가

먼저 setting 에서 Contract email 란을 입력 후,

https://developers.facebook.com/apps/266142693572567/settings/


혹시 퍼미션을 맞게 설정했는데도 보낸 글이 관리자만 보이고 비회원이나 기타 다른 회원이 안보인다면 
https://developers.facebook.com/apps/335249969963920/review-status/ 


Do you want to make this app and all its live features available to the general public? -> YES로 토글시킴




새로바뀐 api 페이지