Publicar en FanPage con Api PHP de facebook.


Última Actualización: 31/08/2022 19:03 Nro de Vistas: 12634

hace tiempo publicamos como utilizar la Api PHP de Facebook para publicar Automáticamente en Facebook. Seguro que cuando te funcionó todos felices y bueno cada vez que queremos publicar algun artículo lo publicamos automáticamente en Facebook tal como hacemos en esta web.

Pero tristemente cuando Publicamos en el Muro de Nuestra Fanpage solo sale al lado derecho asi:

Y bueno nosotros queremos que salgá asi:


 

Es Decir. Cuando publicamos en el FanPage queremos publicar no con nuestro nombre de Usuario, sino con el Nombre de la FanPage. Asi Facebook dará importancia a tu publicación.

Para esto tenemos que tener algunas concideraciones: 

  1. Debes ser el Administrador de la FanPage.
  2. Debes conceder los permisos de manage_pages a tu App.
  3. Esta solicitud solo pidelo a los admins de tu Fanpage. 

Comenzamos: La forma de publicar es casi lo mismo. Todos los parámetro son casi iguales. La unica diferencia es que para Publicar como FanPage se requiere el acces_token de tu fanpage. Entonces en los Parámetro para publicar agregaremos el Acces_token de la Fanpage.

require_once('facebook/facebook.php');//Mi ruta de la Libreria
$facebook = new Facebook(array(
'appId' =>"TUAPPID",
'secret' => "TUKEYSECRET",
'cookie' => true ,
'req_perms' => 'publish_stream, manage_pages',
//Aqui agregas entonces el permiso manage_pages.
));

$parametros = array('message' => utf8_encode('Hola Estoy Aprendiendo a Publicar desde PHP utilizando la API de Facebook í tildes correctamente á é í ó ú '),
'name' => 'Aprendo a Utilizar PHP SDK de Facebook',
'caption' => 'semitasoft.com',
'link' => 'http://semitasoft.com/isaac-editor-23.html',
'description' => utf8_encode( 'En Esta web aprendo secretos de los diseñadores Web'), 
'picture' => 'http://semitasoft.com/images/usuarios/100001331294729.jpg',
'access_token' => $facebook->getAccessToken(),
'actions' => array(array('name' => utf8_encode('Leer Artículo'),
'link' => 'http://semitasoft.com/isaac-editor-23.html'
))
);

if ($facebook->getUser()) {
$facebook->api('/me/feed','post',$parametros);
// Hasta aqui todo Igual. Aqui agregaremos el Accestoken de la FanPage
$datos_AT = fb_accestoken($parametros['access_token'], 'ID o USERNAME de TU FANPAGE');
if(!is_null($datos_AT['access_token'])){
      $parametros['access_token'] = $datos_AT['access_token'];
}
$facebook->api('/'.$iddetuFanPage.'/feed','post',$parametros);
}

 COMO OBTENEMOS EL ACCES TOKEN DE MI FANPAGE

Si te fijas estoy haciendo llamadas a unas funciones php para Obtener el Acces_token de mi FanPage. Aqui abajo les muestro las dos funciones. Ojo. Si no es administrador del FanPage también publicará pero este no saldrá a nombre de FanPage sino solo de usuario y el mensaje será apreciado como en la Primera imagen.

function fb_id_user($username){
	$desde = strripos($username,'/') + 1 ;
	if ($desde >= 3){
	$username = substr ($username,$desde);
	}
	$graph = file_get_contents('https://graph.facebook.com/'.$username);
	$fb_json = json_decode($graph,true);
	is_null($fb_json['username']) ? $user = NULL : $user = $fb_json['username'];
	return array('id' => $fb_json['id'],'username' => $user);
}
function fb_accestoken($us_atoken, $fanpage){
	$graph = file_get_contents('https://graph.facebook.com/me/accounts?access_token='.$us_atoken);
	if (!$graph){
		return array('error' => 'No se pudo conectar a https://graph.facebook.com/me/accounts?access_token='.$us_atoken);
	}else{
		$fb_json = json_decode($graph,true);
		$fb_json = $fb_json['data'];
		$fanid = fb_id_user($fanpage);
		$fanid = $fanid['id'];
			foreach($fb_json as $index => $valor){

				if ($valor['id'] == $fanid){
					$access_token = $valor['access_token'];
					$id = $valor['id'];					
					break;
				}
			}
			return array('access_token' => $access_token,'id' => $id );

	}
}

 La Función fb_id_user($username) puedes reutilizarlo para otras cosas tambien. esta funciona asi.

$fanpage = 'http://www.facebook.com/pages/Iglesia-Luterana-de-Bah%C3%ADa-Blanca-IELA/168862396509312';
//En este caso es un FanPage que no tiene Username.
$valores = fb_id_user($fanpage);
echo $valores['id'];//Te dará el ID del FanPage
echo $valores['username'];//Te dará el Username del FanPage. En este caso devolverá NULL

//Otro ejemplo
$fanpage = 'https://www.facebook.com/dantegebel';
//Es lo mismo que usar $fanpage = 'dantegebel'; o $fanpage = 'ID_FANPAGE';
//En este caso es un FanPage que SI tiene Username.
$valores = fb_id_user($fanpage);
echo $valores['id'];//Te dará el ID del FanPage
echo $valores['username'];//Te dará el Username del FanPage. 


 Parece ridícula las funciones pero en PHP y Facebook a veces es necesario usar solo ID o solo Username.

 

Si pueden mejorar estas funciones, sientanse libres de hacerlo.