¿Cómo se publica en el muro de una página de Facebook (no de perfil)?

86

Tengo un sitio de blog escrito en php y publica nuevas publicaciones de blog en Twitter y un ping de blog automáticamente bajo el capó usando solicitudes de publicación http simples pasadas usando php curl.

Tengo una página de Facebook para el sitio del blog y quiero que las actualizaciones se publiquen en el muro de la página, ¿hay alguna forma sencilla de hacerlo?

Lo que realmente quiero es una URL y un conjunto de parámetros para empaquetar como una solicitud de publicación http.

Tenga en cuenta que esto es para publicar en el muro en una página de estilo nuevo, no en un perfil.

Gracias por adelantado.

Estera
fuente
¿Ha probado la Wiki de desarrolladores de Facebook en wiki.developers.facebook.com/index.php/Main_Page o en otro lugar de su sitio de desarrolladores developers.facebook.com/?ref=pf ?
DOK
No me gusta el desarrollador de Facebook, pero creo que primero debes escribir una aplicación de Facebook para estar autorizado a hacerlo.
septiembre

Respuestas:

65

Obtenga PHP SDK de github y ejecute el siguiente código:

<?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);

el código anterior publicará el mensaje en su muro ... y si desea publicarlo en el muro de sus amigos u otros, reemplácelo mecon el ID de usuario de Facebook de ese usuario ... para obtener más información, consulte la documentación de la API.

Harish Kurup
fuente
¡Ese código funciona genial !, pero en el post no hay foto .. ¿Qué me estoy perdiendo aquí? ¡Gracias!
Diego
@Diego revisa la URL de las fotos. en el ejemplo anterior es mysite.com/pic.gif. por lo que buscará la imagen en la URL dada. así que intente configurarlo. por favor, compruebe la documentación fb para cualquier cambio en el parámetro de, cos la última vez que trabajé en FB frente era aug 2010 ..
Harish Kurup
¿$ facebook es una variable integrada en la instalación de php? si no, ¿cómo se crea la instancia de $ facebook?
sadmicrowave
@sadmicrowave la variable $ facebook es el objeto de la clase Facebook (puede haber cambiado el nombre de la clase, así que lea los documentos después de tener la idea). Necesita crear una instancia del objeto con el siguiente código "$ facebook = new Facebook (array ('appId' => APPID, 'secret' => SECRETKEY, 'cookie' => true));"
Harish Kurup
También necesita tener el SDK de PHP instalado en su aplicación para tener acceso a la clase de Facebook
mitchellhislop
9

Esto funciona para mi:

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);
}
Helton Uchoa
fuente
Tengo un problema con OAuth, error 200. Mi APP solicita manage_pages, publish_actions, publish_stream ... ¿Alguna idea?
Jepser Bernardino
8

Harish tiene la respuesta aquí, excepto que debe solicitar manage_pagespermiso al autenticarse y luego usar el en page-idlugar de meal publicar ...

$result = $facebook->api('page-id/feed/','post',$attachment);
Precio de Phill
fuente
1
pero debe necesitar el token de acceso a la página para publicar como página
Danés Iqbal
5

No puede publicar en los muros de Facebook automáticamente sin crear una aplicación y utilizar el editor de feeds con plantilla, como señaló Frank.

Lo único que puede hacer es utilizar los widgets 'compartir' que proporcionan, que requieren la interacción del usuario.

Darryl E. Clarke
fuente
3

Si su blog genera una fuente RSS, puede usar la aplicación " RSS Graffiti " de Facebook para publicar esa fuente en su muro de Facebook. También hay otras aplicaciones RSS de Facebook; simplemente busque "Facebook para aplicaciones RSS" ...

Ricky
fuente
0

Puede realizar llamadas a la API eligiendo el método HTTP y configurando parámetros opcionales:

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

Enviar publicación al muro de Facebook:

Incluya el archivo fbConfig.php para conectar la API de Facebook y obtener el token de acceso.

Publicar mensaje, nombre, enlace, descripción y la imagen se enviará al muro de Facebook. Se mostrará el estado posterior al envío.

Si el token de acceso de FB ($ accessToken) no está disponible, se generará la URL de inicio de sesión de Facebook y el usuario será redirigido a la página de inicio de sesión de FB.

Publicar en el muro de 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);
}

Refrences:

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/

Farhad
fuente
Gracias. ¿Has probado el código? Los fragmentos de vista previa de enlaces personalizados ahora están obsoletos, por lo que el código no se publicará en una página ( developers.facebook.com/blog/post/2017/06/27/… )
user919426