57

Publicar en el muro de Facebook desde tu web con PHP

November 30, 2009

Publicidad / Advertisement

La idea es usar un formulario desde nuestra página web que publique mensajes en el muro de Facebook.

Publicación en el muro de Facebook con la API antigua:

Para ello usaremos el método de la API stream_publish()
Como siempre que queramos hacer uso de la API de Facebook, deberemos tener creada una aplicación Facebook que nos proporcionará las clave API y la clave secreta.
Para crear la aplicación entra aqui:
http://www.facebook.com/developers/createapp.php

También debes haber descargado el API PHP de Facebook, lo puedes hacer desde el siguiente link:

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

Código PHP para publicar mensajes desde tu Web en el muro de Facebook
<?php include_once("path_libs/facebook.php");
$api_key = "TU_API_KEY";
$secret_key ="TU_SECRET_KEY";
$facebook = new Facebook($api_key, $secret_key);
$user = $facebook->require_login();
//Este es el texto que vamos a publicar, lo suyo es que sea una variable POST de un formulario
$message = $_POST['mensaje'];
$has_permission = $facebook->api_client->users_hasAppPermission("publish_stream");

//El usuario debe dar permiso para que tu aplicación publique información en su muro.
if($has_permission)
{
$facebook->api_client->stream_publish($message);
}
else {
$address = “http://www.facebook.com/connect/prompt_permissions.php?api_key=&v=1.0&next=http://www.facebook.com/connect/login_success.html?xxRESULTTOKENxx&display=popup&ext_perm=read_stream,publish_stream&enable_profile_selector=1&profile_selector_ids=”.$user;

header(“location:$address”);
}
?>

Para ver ejemplos de cómo sitios web integran Facebook, consulta estos casos reales:
https://developers.facebook.com/showcase/

Para más información consultar  https://developers.facebook.com/docs/reference/api/post/

 

Nueva forma de hacerlo con Graph API:

Otra opción es usar la nueva Graph API, recomiendo visitar el siguiente link para documentarse sobre todos los parámetros disponibles.

Según la documentación, para publicar en el muro de Facebook hay que realizar una petición HTTP POST  a la URL apropiada para el caso que nos facilita la Graph API.  y es necesario usar el token de acceso. LA URL es de la siguiente forma:

https://graph.facebook.com/[perfil_facebook]/feed

donde [perfil_facebook] lo sustituiremos por el nombre o el ID que queramos utilizar para la publicación.

Podemos o bien usar un formulario por POST , o bien hacer la petición POST usando el comando curl de la siguiente manera.  Hay que tener claro que el access token es un hash que vá asociado a la aplicación con la cual queremos publicar. Recordemos que el uso de la API es accesible si tenemos una aplicación Facebook creada.

curl -F 'access_token=...' \ -F 'message=Hola! estoy publicando en el muro de Facebook con la Graph API.' \ https://graph.facebook.com/[perfil_facebook]/feed

Pego aquí el código PHP que ejecuta la petición POST a la API y los argumentos disponibles, en el ejemplo sólo se usa ‘message’:

<?php

// argumentos de publicacion : message, picture, link, name, caption, description, source

system ( “curl -F ‘access_token=”.$access_token.”‘ -F ‘message=Hello, probando la nueva API.’  ‘https://graph.facebook.com/[perfil_facebook]/feed’ “) ;

?>

Resultado devuelto por la Graph API:

{“error”:{“message”:”(#200) The user hasn’t authorized the application to perform this action”,”type”:”OAuthException”}}

 

Parece ser que este método no funciona correctamente, después de 2 horas buscando documentación sobre el error,  sólo he encontrado a desarrolladores con el mismo problema y la misma frustración. De momento parece que la única solución es usar la vieja API REST , según indican en la documentación de este bug de Facebook

 

http://bugs.developers.facebook.net/show_bug.cgi?id=12433

 

Otro intento, esta vez con la API REST:

Para la publicación de un post en Facebook a través de la API REST, conviene mirar el siguiente enlace de documentación : http://developers.facebook.com/docs/reference/rest/links.post/

En la página de Facebook avisan que la API REST está obsoleta y  recomiendoan el uso de la Graph API .  En definitiva, por ahora un callejón sin salida, hasta que arreglen el bug.

 

 

 

Publicidad / Advertisement

 

Topics: Desarrollo web, Facebook | 10 Comments »

10 Responses to “Publicar en el muro de Facebook desde tu web con PHP”

  1. Josue Says:
    December 29th, 2009 at 7:49 am

    Esta linea <api_client->users_hasAppPermission(”publish_stream”);>> me retorna valor False y no me deja publicar en mi muro el mensaje que quiero. Alguna ayuda????

  2. Mario Says:
    December 30th, 2009 at 5:31 pm

    hola soy nuevo en esto, ya intente pero cuando lo ejecuto me manda la pantalla de iniciar secion inicio sesion y me manda 5 errores en la linea 395 de facebook.php .. que tengo que hacer– saludos y gracias por la ayuda

  3. creacciona Says:
    January 4th, 2010 at 11:37 am

    Cuando el método user_hasAppPermission() retorna falso, la ejecución del script debería pasar por la redirección que accede a la página de solicitud de permisos de Facebook.

    http://www.facebook.com/connect/prompt_permissions.php?…..

    ¿Puedes verificar que te hace la redirección y los parámetros de la URL son los correctos?

    Un saludo.

  4. Alexis Says:
    March 26th, 2010 at 9:10 pm

    Hola, sabes que necesito hacer esta publicacion y no me funciona, user_hasAppPermission()..
    la URL creo que no esta buena…
    ayudame por que es lo mas corto que e encontrado y preciso…

  5. kirochi Says:
    March 29th, 2010 at 5:13 pm

    Arreglé el asunto, en la dirección no me dí cuenta que había que agregar la api_key mía

  6. Carlos Says:
    May 18th, 2010 at 6:04 pm

    Hola,
    Es posible publicar en mi muro sin necesidad de una aplicación? para que cualquier usuario pueda publicar en su muro..

    Gracias

  7. Info Says:
    July 11th, 2010 at 6:18 pm

    Gracias por la información, ha funcionado de fabula.

  8. Jorge Says:
    August 30th, 2010 at 1:46 pm

    La API de facebook no está disponible.
    ¿Podiais hacer el favor de subirla otra vez?
    Gracias

  9. creacciona Says:
    September 10th, 2010 at 7:10 pm

    Desde que publiqué este post la gente de Facebook lo ha puesto todo patas arriba y lo ha cambiado todo. Ahora hay que mirarse esto:

    http://developers.facebook.com/docs/reference/api/

  10. JGL Says:
    September 21st, 2011 at 4:04 pm

    Ahora hay una forma de publicar en el muro con el SDK de javascript que ha sacado facebook. Un ejemplo sencillo de como se hace viene aquí:

    http://aplicacionesfacebookparadummies.blogspot.com/2011/09/landing-page-utilizando-el-api-de.html

Comments