Подтвердить что ты не робот

Facebook PHP API сообщение на стене подпадает под "Последние сообщения от других"

Я хочу опубликовать сообщение на стене страницы Facebook. Я являюсь администратором приложения и страницы, используемой в этом коде, я уже дал разрешения, необходимые для моего приложения, чтобы иметь возможность размещать на моей странице, он работает, когда я использую только поле "сообщение", например:

$message = array(
            'message' => "Test2",<br>
           );
$result = $fb->api('/411895472189524/feed','POST',$message);

Код выше сообщений на мою стену страницы и сообщение сделано "из" самой страницы, как если бы я сделал это вручную из facebook. Это отлично работает.

Но когда я пытаюсь добавить больше полей, например, "ссылка" или "изображение" или "описание", сообщение отправляется в "Последние сообщения от других на странице TEST Jojo", и сообщение теперь сделанный из моего личного счета (Joelle Landrie), а не из самой страницы. См. Код ниже.

$message = array(
            'message' => "Test2",
            'picture' => "http://www.cleanpopo.com/uploads/1/3/1/5/13154615/245431315.jpg",
            'description' => "This is a test description",
            'link' => "google.com"
           );
$result = $fb->api('/411895472189524/feed','POST',$message);

Смотрите: https://www.facebook.com/pages/TEST-Jojo-Page/411895472189524

Поле link, кажется, вызывает проблемы, я могу получить успешную запись на своей странице, используя поля message, picture и description. Только это бесполезно для меня, мне нужно, чтобы мой пост имел ссылку.



РЕШЕНИЕ

Спасибо Shadowfax, который спросил, использую ли я "page_access_token". Я не был. Я начал искать в Интернете, как получить этот токен, добавил его в свой код, и теперь он отлично работает!!

Окончательный код

$appId = 'YOUR APP ID';
$secret = 'YOUR SECRET';
$returnurl = 'http://www.yoursite.com';
$permissions = 'manage_pages, publish_stream, offline_access';

$fb = new Facebook(array('appId'=>$appId, 'secret'=>$secret));
$fbuser = $fb->getUser();

if($fbuser){

        $page_id = "YOUR PAGE ID";
        $page_access_token = "";
        $result =  $fb->api("/me/accounts");

        // loop trough all your pages and find the right one
        if( !empty($result['data']) )
        {
           foreach($result["data"] as $page) 
           {
             if($page["id"] == $page_id)
             {
               $page_access_token = $page["access_token"];
               break;
             }
           }
        }
        else
        {
          echo "AN ERROR OCCURED: could not get the access_token. Please verify the page ID ".$page_id." exists.";
        }

        // set the facebook active facebook access token as the one we just fetch
        $fb->setAccessToken($page_access_token);

        // Now try to post on page wall
        try{
            $message = array(
                'message' => "YOUR MESSAGE",
                'picture' => "YOUR PICTURE",
                'description' => "YOUR DESCRIPTION",
                'link' => "YOUR LINK"
            );
            $result = $fb->api('/'.$page_id.'/feed','POST',$message);
            if($result){
                echo 'Successfully posted to Facebook Wall...';
            }
        }catch(FacebookApiException $e){
            echo $e->getMessage();
        }

    }else{

        $fbloginurl = $fb->getLoginUrl(array('redirect-uri'=>$returnurl, 'scope'=>$permissions));
        echo '<a href="'.$fbloginurl.'">Login with Facebook</a>';

    }
4b9b3361

Ответ 1

Просто отправьте ответ в качестве ответа.

При публикации в качестве страницы вам необходимо получить разрешение manage_pages, затем получить желаемую страницу access_token через вызов /me/accounts API и использовать токен ,, чтобы сделать /{page_id}/feed POST звоните.

Пламя, оригинальный плакат, сумело это сделать и разместило свое решение, отредактированное в самом вопросе. Я просто вставляю его здесь и делаю его Community Wiki

$appId = 'YOUR APP ID';
$secret = 'YOUR SECRET';
$returnurl = 'http://www.yoursite.com';
$permissions = 'manage_pages, publish_stream, offline_access';

$fb = new Facebook(array('appId'=>$appId, 'secret'=>$secret));
$fbuser = $fb->getUser();

if($fbuser){

        $page_id = "YOUR PAGE ID";
        $page_access_token = "";
        $result =  $fb->api("/me/accounts");

        // loop trough all your pages and find the right one
        if( !empty($result['data']) )
        {
           foreach($result["data"] as $page) 
           {
             if($page["id"] == $page_id)
             {
               $page_access_token = $page["access_token"];
               break;
             }
           }
        }
        else
        {
          echo "AN ERROR OCCURED: could not get the access_token. Please verify the page ID ".$page_id." exists.";
        }

        // set the facebook active facebook access token as the one we just fetch
        $fb->setAccessToken($page_access_token);

        // Now try to post on page wall
        try{
            $message = array(
                'message' => "YOUR MESSAGE",
                'picture' => "YOUR PICTURE",
                'description' => "YOUR DESCRIPTION",
                'link' => "YOUR LINK"
            );
            $result = $fb->api('/'.$page_id.'/feed','POST',$message);
            if($result){
                echo 'Successfully posted to Facebook Wall...';
            }
        }catch(FacebookApiException $e){
            echo $e->getMessage();
        }

    }else{

        $fbloginurl = $fb->getLoginUrl(array('redirect-uri'=>$returnurl, 'scope'=>$permissions));
        echo '<a href="'.$fbloginurl.'">Login with Facebook</a>';

    }