Как разместить пост на стене на странице facebook (не в профиле)

86

У меня есть сайт блога, написанный на php, и он публикует новые сообщения в блоге в Twitter, а блог автоматически пингует под капотом, используя простые HTTP-запросы, передаваемые с помощью php curl.

У меня есть страница блога в facebook, и я хочу, чтобы обновления публиковались на стене на странице. Есть ли простой способ сделать это?

Что мне действительно нужно, так это URL-адрес и набор параметров для отправки в виде HTTP-запроса.

Обратите внимание, что это делается для публикации на стене на странице нового стиля, а не в профиле.

Заранее спасибо.

Мат
источник
Вы пробовали использовать Facebook Developer Wiki по адресу wiki.developers.facebook.com/index.php/Main_Page или где-либо еще на их сайте разработчиков developers.facebook.com/?ref=pf ?
DOK,
Я не увлекаюсь разработкой facebook, но я думаю, вам нужно сначала написать приложение fb, чтобы получить разрешение на это.
сентябрь

Ответы:

65

Получите PHP SDK с github и запустите следующий код:

<?php
$attachment = array(
    'message' => 'this is my message',
    'name' => 'This is my demo Facebook application!',
    'caption' => "Caption of the Post",
    'link' => 'http://mylink.com',
    'description' => 'this is a description',
    'picture' => 'http://mysite.com/pic.gif',
    'actions' => array(
        array(
            'name' => 'Get Search',
            'link' => 'http://www.google.com'
        )
    )
);

$result = $facebook->api('/me/feed/', 'post', $attachment);

приведенный выше код отправит сообщение на вашу стену ... и если вы хотите опубликовать сообщение на стене ваших друзей или других лиц, замените его meна идентификатор пользователя Facebook этого пользователя ... дополнительную информацию см. в документации по API.

Хариш Куруп
источник
этот код отлично работает !, но в посте нет изображения .. Что мне здесь не хватает? Благодарность!
Diego
@Diego проверьте URL-адрес фото. в приведенном выше примере это mysite.com/pic.gif. поэтому он будет получать изображение по заданному URL-адресу. так что попробуйте установить его. Пожалуйста, проверьте документацию fb на предмет любых изменений в параметрах, потому что последний раз я работал в FB front в августе 2010 ..
Хариш Куруп
$ facebook - это переменная, встроенная в установку php? если нет, то как создается экземпляр $ facebook?
sadmicrowave
@sadmicrowave переменная $ facebook является объектом класса Facebook (возможно, изменилось имя класса, поэтому, пожалуйста, прочтите документацию после того, как получите идею). Вам необходимо создать экземпляр объекта с помощью следующего кода: «$ facebook = new Facebook (array ('appId' => APPID, 'secret' => SECRETKEY, 'cookie' => true));
Хариш Куруп
Вам также необходимо установить PHP SDK в вашем приложении, чтобы иметь доступ к классу Facebook
митчеллхислоп,
9

Это работает для меня:

try {
       $statusUpdate = $facebook->api('/me/feed', 'post',
                 array('name'=>'My APP on Facebook','message'=> 'I am here working',
                 'privacy'=> array('value'=>'CUSTOM','friends'=>'SELF'),
                 'description'=>'testing my description',
                 'picture'=>'https://fbcdn-photos-a.akamaihd.net/mypicture.gif',
                 'caption'=>'apps.facebook.com/myapp','link'=>'http://apps.facebook.com/myapp'));
 } catch (FacebookApiException $e) {
      d($e);
}
Хелтон Учоа
источник
У меня проблема с OAuth, ошибка 200. Мое приложение запрашивает manage_pages, publish_actions, publish_stream ... Есть идеи?
Jepser Bernardino
8

Здесь у Хариша есть ответ - за исключением того, что вам нужно запрашивать manage_pagesразрешение при аутентификации, а затем использовать page-idвместо meпри публикации ....

$result = $facebook->api('page-id/feed/','post',$attachment);
Фил Прайс
источник
1
но вам нужен токен доступа к странице, чтобы публиковать как страницу
Датский Икбал
5

Вы не можете публиковать сообщения на стенах Facebook автоматически, не создав приложение и не используя шаблонный издатель каналов, как указал Фрэнк.

Единственное, что вы можете сделать, это использовать предоставляемые ими виджеты «поделиться», которые требуют взаимодействия с пользователем.

Дэррил Э. Кларк
источник
3

Если ваш блог выводит RSS-канал, вы можете использовать приложение Facebook « RSS Graffiti », чтобы разместить этот канал на своей стене в Facebook. Есть и другие RSS-приложения Facebook; просто выполните поиск "Facebook для приложений RSS" ...

Рики
источник
0

Вы можете выполнять вызовы API, выбрав метод HTTP и установив дополнительные параметры:

$facebook->api('/me/feed/', 'post', array(
    'message' => 'I want to display this message on my wall'
));

Отправить сообщение на стену Facebook:

Включите файл fbConfig.php для подключения API Facebook и получения токена доступа.

Сообщение, имя, ссылка, описание и изображение будут отправлены на стену Facebook. Будет показан статус отправки сообщения.

Если токен доступа к FB ($ accessToken) недоступен, будет сгенерирован URL-адрес для входа в Facebook, и пользователь будет перенаправлен на страницу входа в FB.

Опубликовать на стене facebook php sdk

<?php
//Include FB config file
require_once 'fbConfig.php';

if(isset($accessToken)){
    if(isset($_SESSION['facebook_access_token'])){
        $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
    }else{
        // Put short-lived access token in session
        $_SESSION['facebook_access_token'] = (string) $accessToken;

        // OAuth 2.0 client handler helps to manage access tokens
        $oAuth2Client = $fb->getOAuth2Client();

        // Exchanges a short-lived access token for a long-lived one
        $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
        $_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;

        // Set default access token to be used in script
        $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
    }

    //FB post content
    $message = 'Test message from CodexWorld.com website';
    $title = 'Post From Website';
    $link = 'http://www.codexworld.com/';
    $description = 'CodexWorld is a programming blog.';
    $picture = 'http://www.codexworld.com/wp-content/uploads/2015/12/www-codexworld-com-programming-blog.png';

    $attachment = array(
        'message' => $message,
        'name' => $title,
        'link' => $link,
        'description' => $description,
        'picture'=>$picture,
    );

    try{
        //Post to Facebook
        $fb->post('/me/feed', $attachment, $accessToken);

        //Display post submission status
        echo 'The post was submitted successfully to Facebook timeline.';
    }catch(FacebookResponseException $e){
        echo 'Graph returned an error: ' . $e->getMessage();
        exit;
    }catch(FacebookSDKException $e){
        echo 'Facebook SDK returned an error: ' . $e->getMessage();
        exit;
    }
}else{
    //Get FB login URL
    $fbLoginURL = $helper->getLoginUrl($redirectURL, $fbPermissions);

    //Redirect to FB login
    header("Location:".$fbLoginURL);
}

Ссылки:

https://github.com/facebookarchive/facebook-php-sdk

https://developers.facebook.com/docs/pages/publishing/

https://developers.facebook.com/docs/php/gettingstarted

http://www.pontikis.net/blog/auto_post_on_facebook_with_php

https://www.codexworld.com/post-to-facebook-wall-from-website-php-sdk/

Фархад
источник
Спасибо. А вы пробовали код? Фрагменты предварительного просмотра настраиваемых ссылок теперь устарели, поэтому код не будет публиковаться на странице ( developers.facebook.com/blog/post/2017/06/27/… )
user919426