Cómo publicar posts en Facebook de manera automatizada con PHP
- Andrés Cruz
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
:
Y click en el botón "Get Token":
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(); }
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:
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:
Y clic en el botón "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ó:
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.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter