DesarrolloLibre

Desarrollo Web, Android, juegos y mucho más

Categorias
21-07-2016

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; 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.

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 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 imnedianta; 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

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 debe presentar ahora la siguiente estructura:

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 Mundoss",
	];
	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; obviamente debes colocar en donde dice TuTokenDeAcceso tu token de acceso.

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

Sip, me pase al lado oscuro de Windows... por los momentos...

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.


Publicidad

Give me for a beer!

Algunos recursos que te pueden interesar

TCPDF: clase Oper Source para generar PDF con PHP

TCPDF: clase Oper Source para generar PDF con PHP

API REST en CodeIgniter

API REST en CodeIgniter

Algunos artículos que te pueden interesar

Cómo crear nuestros propios botones sociales para compartir

Cómo crear nuestros propios botones sociales para compartir

Se explica cómo definir la estructura de una página web base empleando flex.

Andrés Cruz 18-04-2016

Creando un proyecto con Api.ai (parte 1)

Creando un proyecto con Api.ai (parte 1)

En esta entrada veremos como crear los agents, entities y intents desde el portal de api.ai para poder emplearlos desde nuestras aplicaciones.

Andrés Cruz 05-03-2015

La API de archivos en JavaScript - datos de los archivos

La API de archivos en JavaScript - datos de los archivos

Veremos cómo trabajar con parte de la API de archivos en JavaScript y obtener datos de archivos como la extensión, MIME, tamaño de los archivos que se encuentren cargados localmente a través del input type="file" y derivados.

Andrés Cruz 21-01-2016