Cómo publicar posts en Facebook de manera automatizada con PHP

21-07-2016 - Andrés Cruz

Cómo publicar posts en Facebook de manera automatizada con PHP

Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos.

Siguiendo con los experimentos con la API Graph de Facebook y la SDK de Facebook para PHP hoy veremos cómo publicar post en Facebook de manera automatizada empleando la API de Facebbok; lo cual resulta en una variación de ¿Cómo publicar un post en nuestro muro con la API Graph de Facebook (PHP)? lo cual se explicará a continuación.

Durabilidad del token de autenticación de Facebook

El problema que ocasiona la forma que empleamos en la entrada citada anteriormente, es la necesidad de tener que dar un clic en un enlace para generar el token de acceso, lo cual imposibilita la automatización del script mediante un CRON u otra tecnología de nuestra preferencia; este token solo puede ser empleado una sola vez y si intentamos emplear múltiples veces obtendremos un error como el siguiente:

Graph returned an error: This authorization code has been used.

Lo que significa que el token fue empleado y no puede ser reutilizado; pero existe una forma de obtener un token que no expire.

Obteniendo un token de Facebook que no expira para nuestra aplicación PHP

Por suerte la gente de Facebook pensó en una posible solución para la situación anterior y es que podemos obtener un token para nuestra aplicación que no expire de manera inmediata; para eso debemos ir al siguiente enlace y crear el token de la siguiente manera:

Click en la pestaña "Graph API Explorer" y selecciona tu aplicación, en nuestro caso se llama test:

Selección app facebook

Y click en el botón "Get Token":

Obtener token botón

Completando el ejemplo de publicación de post automático de Facebook con PHP

Con nuestro token generado, podemos emplear el código presentado en la entrada anterior y realizar algunos cambios sutiles; solo nos interesa el archivo llamado post.php el cual emplea la SDK de Facebook para mandar los POST debe presentar la siguiente estructura; finalmente, nuestro ejemplo queda de la siguiente forma:

date_default_timezone_set('UTC');
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

session_start();
require 'Facebook/config.php';
define('FACEBOOK_SDK_V4_SRC_DIR',__DIR__ .'/Facebook/');
require_once __DIR__ .'/Facebook/autoload.php';

$fb = new Facebook\Facebook(array(
  'app_id'  => $config['App_ID'],
  'app_secret' => $config['App_Secret'],
    'default_graph_version' => 'v2.4'
));

 //$helper = $fb->getRedirectLoginHelper();

try {
	$accessToken = 'TuTokenDeAcceso';
//	$accessToken = $helper->getAccessToken();
	$linkData = [
		'link' => 'http://www.desarrollolibre.net/blog/tema/50/html/uso-basico-del-canvas',
		'message' => "Hola Mundo",
	];
	var_dump($fb->post('/feed', $linkData, $accessToken));
	
} catch (Facebook\Exceptions\FacebookResponseException $e) {
	// When Graph returns an error
	echo 'Graph returned an error: ' . $e->getMessage();
} catch (Facebook\Exceptions\FacebookSDKException $e) {
	// When validation fails or other local issues
	echo 'Facebook SDK returned an error: ' . $e->getMessage();
}
Se dejaron comentados los cambios a aplicar para que veas lo sencillo que son los cambios a aplicar; por ejemplo la función sobre nuestro ejemplo; obviamente debes colocar en donde dice getRedirectLoginHelper que permitía realizar el login con la cuenta configurada en el script TuTokenDeAcceso tu token de acceso para que la conexión mediante la SDK de Facebook funcione correctamente.

En general comentamos todo los pasos que eran necesarios para obtener el token.

Ahora para llamar a nuestra aplicación, simplemente debemos invocar una URL como la siguiente:

http://localhost/test/fbtest/post.php

El post.php está contenido dentro de:

Facebook
post.php

Facebook es un directorio con toda la SDK de la API Graph de Facebook que se ha empleado anteriormente; la misma contiene:

facebook sdk

Obteniendo un Token de duración prolongada

El problema con el token anterior es que se vence en más o menos una hora, dando como resultado un problema si deseas automatizar algún proceso cuyo tiempo sea mayor a una hora; afortunadamente es posible obtener un token que dure mucho más tiempo que una hora; para ello desde nuestro Explorador de la API Graph hacemos clic en el ícono de información:

facebook sdk - información icono

Y clic en el botón "Abrir en la herramienta de identificadores de acceso":

facebook sdk - Abrir en la herramienta de identificadores de acceso

Y por último hacemos clic en el botón "Extend Access Token" de la ventana que se nos abrió:

facebook sdk - Extend Access token

Y esto es todo, con esto podemos tener nuestro token de larga duración y emplearlos como parte de una aplicación que sea automatizada en un CRON y automatizar tus post para esta red social.


Andrés Cruz
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.

Conozca nuestros cursos sobre Laravel, CodeIgniter, Flutter, Electron, Django, Flask y muchos más!

Ver los cursos
¡Hazte afiliado en Gumroad!

!Cursos desde!

4$

En Academia

Ver los cursos

!Libros desde!

1$

Ver los libros
!Web Alojada en Hostinger!