Como bien sabrás, Facebook cuenta con una SDK en PHP para poder realizar distintas operaciones en una cuenta en Facebook como publicar un post, obtener datos de una cuenta. etc; esta API por defecto está creada para emplearla en PHP puro (entiéndase sin framework u otra herramienta de desarrollo); por suerte podemos realizar algunas configuraciones en un proyecto CodeIgniter para poder emplearla dentro de nuestros controladores, helper o cualquier otro.
En esta entrada explicaremos cómo integrar la SDK oficial de Facebook para PHP en CodeIgniter sin morir en el intento; recordando un poco, esta SDK es la misma que se ha empleado en anteriores ejemplos:
- ¿Cómo crear una aplicación en la Graph API de Facebook?
- ¿Cómo publicar un post en nuestro muro con la API Graph API de Facebook (PHP)?
- Cómo publicar posts en Facebook de manera automatizada con PHP
Ahora veamos los pasos para integrar la SDK en CodeIgniter:
Copiar la SDK de Facebook a la carpeta library
En general la integración es bastante sencilla; lo primero que debemos hacer es copiar el directorio completo de la SDK de Facebook a la carpeta library
de nuestro proyecto:
Crear nuestra librería custom
Ahora creamos un archivo dentro de la carpeta library
que llamaremos FacebookSDK
o como desees pero intenta que el nombre de la clase no se repita en otra instancia; el archivo tendrá el siguiente contenido:
if (!defined('BASEPATH'))
exit('No direct script access allowed');
date_default_timezone_set('UTC');
require 'Facebook/Facebook.php';
require_once dirname(__FILE__) . '/Facebook/Facebook.php';
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/Facebook/');
require_once __DIR__ . '/Facebook/autoload.php';
class FacebookSDK{
function __construct() {
}
Cómo ves, en general hacemos todos los include
de siempre que son necesarios para trabajar con la API de Facebook; ahora creamos nuestro controlador e incluimos nuestra librería:
$this->load->library('FacebookSDK');
O el nombre que le pongas.
Para facilitar el proceso, colocamos como variables globales dentro de nuestro controlador la app_id
y el app_secret
; y esto es todo lo que necesitamos para integrar la SDK de Facebook en CodeIgniter; ahora si creamos el siguiente controlador en CodeIgniter:
defined('BASEPATH') OR exit('No direct script access allowed');
class Facebookpost extends CI_Controller {
var $app_id ='';
var $app_secret = '';
public function __construct() {
parent::__construct();
$this->load->database();
$this->load->library('FacebookSDK');
}
public function index() {
$fb = new Facebook\Facebook(array(
'app_id' => $this->app_id,
'app_secret' => $this->app_secret,
'default_graph_version' => 'v2.4'
));
try {
$accessToken = 'token-que-no-vence';
//$accessToken = $helper->getAccessToken();
$linkData = [
'link' => 'http://www.desarrollolibre.net/blog/tema/55/html/uso-basico-del-canvas',
'message' => "otro test",
];
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();
}
}
}
Veremos que se publica nuestro posts en Facebook sin problemas; el código anterior ya ha sido tratado en las anteriores entradas señaladas a un inicio de esta; si tienes dudas, puedes ver los enlaces anteriores.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter