ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • *** 페이스북 API 메인으로 전송이 아니고 팬페이지로 전송하기-퍼미션
    컴터/기타 2016. 3. 30. 11:58


    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 페이지






    댓글 0

Designed by Tistory.