Si para mi fue un poco dolor de cabeza utilizar esta api
, hace un tiempo atras un cliente que tengo me pidió que queria actualizar una
sub pagina de su perfil de facebook (promociones de productos y cuando se agregan nuevos productos al sitio) desde el panel de control de su sitio. Esta fue la forma que puedo hacerlo funcionar...
fb_connect.php<?php
include(APPPATH.'libraries/facebook/facebook.php');
class Fb_connect extends Facebook{
public $user = NULL;
public $user_id = FALSE;
public $fbLoginURL = "";
public $fbLogoutURL = "";
public $fb = FALSE;
public $fbSession = FALSE;
public $appkey = 0;
public $fbmessage = array();
public function __construct()
{
$CI = & get_instance();
$CI->config->load("facebook",TRUE);
$config = $CI->config->item('facebook');
parent::__construct($config);
$this->user_id = $this->getUser(); // New code
//$me = null;
// login or logout url will be needed depending on current user state.
//(if using the javascript api as well, you may not need these.)
//if ($me)
//{
// $this->fbLogoutURL = $this->getLogoutUrl();
//} else {
// $this->fbLoginURL = $this->getLoginUrl();
//}
}
public function saveDataParam($data)
{
$this->fbmessage = $data;
if ($this->user_id)
{
try {
//$me = $this->api('/me');
//$this->user = $me;
$page_id = '123654789156245'; // ID de la subpagina del perfil.
$page_info = $this->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) {
'access_token' => $page_info['access_token'],
'message' => $this->fbmessage['fbmessage']['message'],
'caption' => $this->fbmessage['fbmessage']['caption'],
'link' => $this->fbmessage['fbmessage']['link'],
'name' => $this->fbmessage['fbmessage']['name'],
'description' => $this->fbmessage['fbmessage']['description']
//'picture' => $this->fbmessage['fbmessage']['image']
//'actions' => array(array('name' => 'Get Search',
);
$post_id = $this->api("/$page_id/feed","post",$args);
}
} catch (FacebookApiException $e)
{
}
}
}
} // end class
controlador<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Shopcontroller extends CI_Controller {
public function addproduct()
{
//. . .
$fbmessage = array("fbmessage" => 'message' => 'Mensaje',
'description' => 'Descripción del mensaje',
'caption' => 'Titulo',
'link' => 'htttp://www.enlace.com',
'name' => 'Nombre',
'image' => 'http://www.enlace.com/img/imagen.jpg'
)
);
$this->loginByFacebook($fbmessage);
//. . .
}
private function loginByFacebook($fbmessage)
{
$this->load->library('fb_connect');
$param['redirect_uri'] = site_url("usercontroller/facebook"); //Redireccionar a ...
$param['scope'] = 'email, publish_stream,manage_pages,user_birthday,offline_access';
$this->fb_connect->saveDataParam($fbmessage);
redirect($this->fb_connect->getLoginUrl($param));
}
private function loginOutFacebook()
{
$this->load->library('fb_connect');
$this->fb_connect->logout();
}
}
Luego en la carpeta de tu aplicación config/facebook.php(lo creas)
<?php
$config['appId'] = 'MY_ID';
$config['secret'] = MY_ID_SECRET';
También para actualizar tu perfil. (
Enlace)
Espero que se entienda saludos