Como publicar en facebook como página mediante su API con PHP
Existen muchos códigos de ejemplo por internet de como publicar en facebook mediante PHP, lo que si que no es fácil encontrar es como hacerlo en una página de la que eres administrador con el perfil de esa misma página; eso vengo a explicar en este tutorial.
Este es un ejemplo de como funciona:
Para realizar este ejercicio debes tener unos conocimientos mínimos de programación y un hosting.
Comenzamos:
Lo primero que tienes que hacer es crear una aplicación en facebook, eso lo haces en este enlace https://developers.facebook.com/apps
Le damos un nombre a la aplicación y una url por si esta fuese a interactuar con usuarios.
Pasamos el Captcha y llegamos al panel de configuración de la aplicación, como ya tenemos el ID de la aplicación y el ID secreto para poder utilizar la aplicación necesitamos un token y configurar los permisos que requerirá la aplicación al usuario y los permisos que le damos a la aplicación para publicar.
En rojo se destacan los IDs de nuestra aplicación, ahora pinchamos a la izquierda para configurar los permisos, donde pone Use Graph API Explorer
Pinchamos en GET ACCESS TOKEN y configuramos.
Los permisos al usuario nos dan lo mismo, es que va a ver la aplicación de nosotros.
Lo que si es importante es en la pestaña de la derecha dar permiso para manejar páginas (manage_pages) y para publicar en los muros (publish_stream).
Pinchamos en coger el token y nos aparece una ventana emergente en la que nos avisa de que hará la aplicación y nos pregunta si aceptamos (la aplicación nos pedirá lo que nosotros le digamos que nos pida).
Acto seguido nos pedirá permiso para administrar nuestras páginas, como le hemos indicado nosotros en la pestaña de la derecha manage_page.
Una vez hecho esto el navegador nos devuelve a la página de configuración donde habíamos solicitado el token y nos facilita uno.
Ya tenemos la parte de facebook realizada, ahora toca crear el código.
Para ello nos descargamos la biblioteca facebook-PHP-SDK de https://github.com/facebook/facebook-php-sdk abrimos el comprimido y utilizamos solamente la carpeta src.
En el comprimido hay ejemplos, pero a nosotros con esto nos sirve.
Esa carpeta src la subimos a nuestro hosting y la dejaremos al lado de donde pretendamos ejecutar nuestro código.
Creamos un archivo index.php y le pegamos el siguiente código:
require_once 'src/facebook.php'; //Esto llama a la carpeta con el parse que nos descargamos antes
$app_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'; // Sustituimos las X por el ID de nuestra aplicación
$app_secret = 'xxxxxxxxxxxxxxxxxxxxxxxx'; // Sustituimos las X por el Secret de nuestra aplicación
$token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // ponemos nuestro token
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => false
));
$req = array(
'access_token' => $token,
'message' => 'Mensaje de prueba con mi aplicación');
$res = $facebook->api('/me/feed', 'POST', $req);
?>
Si ahora ejecutamos este archivo index.php en nuestro servidor publicaremos en nuestro muro de facebook el mensaje a través de nuestra aplicación.
Siguiente paso:
Modificamos la línea
$res = $facebook->api('/me/feed', 'POST', $req);
Y cambiamos el me por el ID de una página publicaremos el mensaje en esa página
$res = $facebook->api('/ID_DE_TU_PÁGINA/feed', 'POST', $req);
Con esto publicas el mensaje en la página indicada
Publicamos ahora un enlace
Para publicar un enlace añadimos los parámetros del título, el link, el comentario inferior y la imagen en miniatura que sale a la izquierda.
$req = array(
'access_token' => $token,
'message' => 'Mensaje de prueba con enlace',
'name' => 'Tutorial de aplicación para facebook',
'link' => 'http://el-internauta-de-leon.blogspot.com.es/2012/12/como-publicar-en-facebook-como-pagina.html',
'description' => 'Tutorial de minipunk para aplicación en facebook',
'picture' => 'https://si0.twimg.com/profile_images/1615997950/avatar-minipunk.jpg');
$res = $facebook->api('/me/feed', 'POST', $req);
Esto hará que al ejecutarse el archivo se publique ese enlace en nuestro muro.
Bien, el problema es que si ahora sustituimos en /me/feed por el /ID_DE_PÁGINA/feed publicaremos en la página, pero como usuario, no como página y lo publicado aparecerá donde aparece lo que publica cualquier otro usuario.
Para poder publicar como página el token que utilizamos no es el adecuado, ya que nos lo facilitó a nuestro usuario, tenemos que conseguir el token de cada página que administramos, y es precisamente eso lo que me ha costado mucho averiguar, no hay mucha información al respecto publicada, motivo de más para publicarlo hoy en este blog.
Para conseguir los token de las páginas que administramos debemos utilizar el token que tenemos y añadirlo a la siguiente URL
https://graph.facebook.com/me/accounts?access_token=NUESTRO TOKEN
Nuestro token lo veíamos en la imagen anterior
Al colocar esa URL en el navegador, sumándole nuestro token, facebook nos devuelve un archivo .json como el de la siguiente imagen en el cual nos indica el token de cada página y el ID de la misma (además de categoria, permisos y alguna otra información).
Ahora en nuestro código modificamos el $token = por el de la página en la que queremos publicar y en la línea
$res = $facebook->api('/me/feed', 'POST', $req);
cambiaremos el me/feed y colocaremos el ID de la misma página que el token.
A partir de aquí ya se puede crear un formulario que envíe los parámetros, una frase aleatoria y ejecutarlo mediante el CRON de nuestro servidor, utilizar las variables de un feed de un blog o lo que se nos ocurra.
Cualquier duda puedes dejar un comentario, trataré de responder en la medida de lo posible.
Por otro lado si ves una pregunta en los comentarios y conoces la respuesta todos te estaremos muy agradecidos si publicas lo que sabes.
Hola, excelente tutorial!
ResponderEliminarPero tengo una pregunta, a como lo entiendo esta aplicación solo puede ser usada por el creador, dado que se tiene que modificar el token, correcto?
Para que se pueda utilizar con cualquier usuario necesito algun script generador de token?
Saludos!
En principio está pensada para utilizar por su creador, para usarla cualquier usuario hay que recuperar los tokens y guardarlos en una base de datos para que el script los pueda leer y diferenciar.
EliminarMuchas gracias, lo utilicé y me funciona, el problema es que los tokens expiran en 1 hora apróximadamente, por lo que no puedo crear un proceso automático en mi sitio que cada vez que se suba un contenido se publique a facebook. Sabes algo de como hacer que los tokens sean permanentes? O confirmar si a tí te funciona, lo cual podría ser que tuviera un error en mi aplicación.
ResponderEliminarSaludos desde Colombia.
Lo acabo de solucionar, llevaba 2 días buscando la forma y no lo encontraba hasta que envié el comentario anterior. Los tokens se crean inicialmente con un tiempo de vida de 1 hora, pero pueden ser extendidos indefinidamente visitando una url: https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN.
EliminarFuente: https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token
Muchas gracias por el aporte Carlos.
EliminarMe has ahorrado tener que dar muchas respuestas :)
En ocasiones valen más los comentarios de un post que el post en si :-)
Este comentario ha sido eliminado por el autor.
EliminarHola, tengo una duda, cuando cree el token, si le pongo en debug me dice que caduca en 2 meses! :S como le hago para que nunca caduque? saben?
Eliminaraccess_token=xxxxxx&expires=5182230
Eliminarme entrega un token asi lo copio completo y no me deja publicar en mi fanspage! :'(
Muchas gracias por el tutorial
ResponderEliminarCarlos podrías escribir el escript o detallar lo que hiciste para generar el token de larga vida, tengo ese mismo problema.
Grax.
Saludos.
Te ha puesto ahi la url, no necesitas un script
EliminarPones en el navegador https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EL_TOKEN_QUE_YA_TIENES y pulsas enter, verás cuantos aparecen ;)
Cual es el Token que debo poner para que no caduque, el de mi user o el de la pagina fans??
EliminarHola excelente post! me ayudo a entender mucho!
ResponderEliminarPero te tengo 2 preguntitas, una vez que generas el token como puso Carlos, ya no expira mas verdad? y hay que hacerlo con todos los token de todas las paginas o solo de usuario?
La otra preguntita, es como se te ocurre hacer para enviar a todas las paginas que tengo al mismo tiempo, son como 190 y no quiero tener que hacer archivo por archivo... :(
desde ya gracias!
Saludos!
Mira el comentario más arriba de Carlos ;)
ResponderEliminarTendrías que hacerlo con un echo '
'; después del "'/me/feed', 'POST', " y sustituris el /me/feed por una variable con el toke de cada página ;)
ah ahi lo solucione :D, muchas gracias!!
Eliminarpero tengo otro problemita, no se porque pero solo yo soy el unico que puede ver las cosas que posteo en mi pagina de facebook con la aplicacion :S
el resto no puede ver, y ya me fije y las propiedades las tengo como publico para lo qe hace la applicacion :S
y en el codigo lo tengo asi
$app_id,
'secret' => $app_secret,
'cookie' => false
));
$req = array(
'access_token' => $token,
'message' => 'Tocarle las tetas? El culo? A la mina te la ganaste cuando te deja tocarle ...',
'name' => 'Tocarle las tetas? El culo? A la mina te la ganaste cuando te deja tocarle ...',
'link' => 'http://fraseslikes.com.ar/megusta.php?id=5777',
'description’=> 'Clickea en la frase para verla completa!!',
'picture' => 'http://fraseslikes.com.ar/images/megusta.png');
$res = $facebook->api('/22136xxxx67992/feed', 'POST', $req);
?>
espero que me puedas ayudar!
gracias!
Eso lo haces en la configuración de la visibilidad del perfil o de la página, en el apartado de quien puede ver tus publicaciones, aparecerán las aplicaciones que utilizas y aparecerá la tuya ;)
Eliminarjeje gracias, era porque tenia la aplicaccion en sandbox mode :P
EliminarCual es el Token que debo poner para que no caduque, el de mi user o el de la pagina fans??
ResponderEliminarme salvastes la vida amigo,gracias !!
ResponderEliminarllevaba mucho tiempo intendando hacer esto pero no lo conseguia hasta ahora
La verdad que muy bueno tu post, me anduvo todo bien, lastima que cuando quise implementar lo del token indefinido al que hace referencia Carlos no me funciono. En realidad hice :
ResponderEliminarhttps://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EL_TOKEN_QUE_YA_TIENES
usando el primer token (el de usuario, no el de pagina) y me retorno un nuevo token, prove con este ultimo, pero me arrojo el siguiente error:
Fatal error: Uncaught OAuthException: Malformed access token .... on line 1254
Ya no se que mas probar, no puedo obtener el token indefinido o de larga vida.
Si alguien tiene alguna sugerencia bienvenida sera.
Lo que te dice ahí es que tienes un error en el token.
ResponderEliminarO has puesto el token de pagina para publicar en tu muro o has dejado espacios entre las comillas al pegar el tojen nuevo... trata de repetir los pasos ;)
Excelente tuto!!!
ResponderEliminarAl querer extender token me tira...
{
"error": {
"message": "An unknown error has occurred.",
"type": "OAuthException",
"code": 1
}
}
Xq???
Max, cuando creas la aplicación y obtienes los permisos, tienes que decirle que te pida permiso para manejar las páginas y auotizarlo para obtener el token con esos permisos.
ResponderEliminarscope es para pedir permisos o hazlo a través de la API GRAPH EXPLORER
Gracias Minipunk! el problema era que ponia el token de page en vez del de user.
EliminarOtra question: la extended token es valida por 60 dias... existe alguna forma de que se refresque ese tiempo por así decirlo?
Max, si, pon en el navegador esto
Eliminarhttps://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EL_TOKEN_DE_USUARIO
Y se queda válido para siempre ;)
Una pregunta esto sirve para compartir imagenes en movimiento?
EliminarEste comentario ha sido eliminado por el autor.
EliminarUna pregunta esto sirve para compartir imagenes en movimiento?
ResponderEliminarNo, facebook no deja subir gifs, quienes lo hacen es engañando a facebook, cambiando la extensión ;)
EliminarHola, El post esta muy bueno pero tengo un problemita y es que me sale esto
ResponderEliminarFatal error: Uncaught CurlException: 7: couldn't connect to host thrown in /home/u545149033/public_html/a/src/base_facebook.php on line 977
y no se que hacer si alguien me lo soluciona me ayudaria mucho :D
Gracias...
No es problema del código, es de tu servidor, mira aquí http://stackoverflow.com/questions/9950315/facebook-api-call-returns-curlexception-7
EliminarHola Minipunk, muchas gracias por el tutorial. Una cosa, al poner en el navegador la linea para hacer el token permanente me devuelve otro token. ¿Tengo que usar ese devuelto o el de usuario inicial? Muchas gracias!
ResponderEliminarEl nuevo en los dos apartados, en la llamada y en el $res = $facebook-> ;)
EliminarMuchas gracias, despues de estar probando varios codigo blabla seguir explicaciones blabla y demas, tiooooooooo funcionaa!!!! un compañero de curro quiere matar a mi novia y casarse conmigo.
ResponderEliminarun saludo
Gracias por comentarlo, me haces sentir útil :-))
EliminarGracia por tu manual, por ponerlo tan fácil y comprensible. He conseguido publicar en mi muro, pero a la hora de obtener las id y el token de mis paginas, el json que me devuelve solo obtengo el encabezado
ResponderEliminar{
"data": [
]
}
he probado con el token que caduca a los 60 minutos, con el tocken duradero, pero nada no hya manera.
¿Tengo que dar mas permisos al generar el Token?
Gracias y un saludo
Para saber si te devuelve error u otra cosa pon una línea así:
Eliminarvar_dump($res);
Esto te imprime en pantalla todo lo que te devuelve, en caso de falta de permisos te lo pone, y si es otra cosa ahí lo verás ;)
Gracias, por tu pronta respuesta. Al final era que al generar i token no active la opción en permisos extendidos de administrar paginas.
EliminarGracias por todo
Muy bueno el tuto!
ResponderEliminarLa consulta mia es la siguiente:
Si bien pude publicar en la pagina como si estuviera logueado a la pagina,
¿Alguien sabe como hacer que esa publicación generada ya aparezca como destacada?
Gracias de antemano!
No me suena que esa función la tenga siquiera la aplicación de ellos para smartphone...
EliminarEn su apartado de http://developers.facebook.com/docs/opengraph/getting-started/ tienes la documentación de todo lo que se puede hacer y lo que no, pero vamos que son tantos apartados que uno se acaba perdiendo.
Estoy teniendo problemas con los acentos y carácteres raros. En el vídeo he visto que te salían correctamente... cual es la clave???
ResponderEliminarSolución encontrada... estaba usando el TinyMCE, hay que ajustarle la propiedad:
EliminartinyMCE.init({
entity_encoding : "raw",
y antes de enviarlo al muro hay que usar la función PHP strip_tags para que nos quite las etiquetas HTML que le ha metido el propio TinyMCE
Anda pues no sabía eso, yo suelo codificar el archivo como utf-8 y ya me suele funcionar.
EliminarGracias por el aporte.
buen tutorial. hice todos los pasos y al ejecutar index.php me aparece:
ResponderEliminarFatal error: Uncaught OAuthException: (#368) The action attempted has been deemed abusive or is otherwise disallowed thrown in /home/a5010170/public_html/src/base_facebook.php on line 1254
A mi me aparece lo mismo, no puedo solucionar ese error, voy cambiando de muchos hosting
EliminarEl token a de corresponder con el /me o /ID_DE_PÁGINA según se trate
ResponderEliminarMe arroja este error que hago: ya revise el Token y el ID de pagina y estan correctos: Fatal error: Uncaught OAuthException: (#200) The user hasn't authorized the application to perform this action thrown in /home/sigrid/public_html/src/base_facebook.php on line 1254
EliminarTienes que ponerlo en
Eliminar$res = $facebook->api('/ID_DE_TU_PÁGINA/feed', 'POST', $req);
Y debes ser administrador de la página.
Dice que ese usuario no está autorizado, revisa el código bien y haz que el token no caduque.
Si soy administrador de la pagina, de hecho somos 2 administradores yo y otro.
EliminarEl codigo que tengo es este:
-----------------------------
$req = array(
'access_token' => $token,
'message' => 'Mensaje de prueba con mi aplicación');
$res = $facebook->api('/531709766841991/feed', 'POST', $req);
----------------------------
cuando coloco los datos de token e id de usuario bueno los primeros que nos da, si publica en mi muro sin problema, cuando cambio el ME por el ID de mi FanPage no publica marca error, igual que colocando el Token y el ID de la FanPage, es cuando marca ese error 200
Puedes apoyarme, estoy atorado con ello, ya hice todo el proceso desde abajo y nada...
EliminarMe arroja este error que hago: ya revise el Token y el ID de pagina y estan correctos: Fatal error: Uncaught OAuthException: (#200) The user hasn't authorized the application to perform this action thrown in /home/sigrid/public_html/src/base_facebook.php on line 1254
ResponderEliminarAl crear el token tienes que darle permisos, el de manage_page por lo menos.
EliminarRevisa los pasos que seguro que se te ha pasado alguno por alto.
Ya tiene todos los permisos, fui paso por paso y nada no me permite... me deja publicar como usuario si en mi muro pero no como pagina en la fanpage...
Eliminarya puse el ID de la PAGINA y su TOKEN Correspondiente en base al archivo JSON, y no me deja, tampoco me deja publicar como usuario dentro del la PAGNIA, solo me deja publicar en mi MURO de USUARIO con su correspondiente TOKEN
buen tutorial. hice todos los pasos y al ejecutar index.php me aparece:
ResponderEliminarFatal error: Uncaught OAuthException: (#368) The action attempted has been deemed abusive or is otherwise disallowed thrown in /home/a5010170/public_html/src/base_facebook.php on line 1254
La acción intentada se ha considerado abusivo o que sea rechazado <-- Te dice eso ¿Que url estabas compartiendo? algunas están baneadas de facebook.
EliminarYa encontre la Solución al Fatal error: Uncaught OAuthException: (#200) The user hasn't authorized the application to perform this action thrown... solo deben colocar permisos extendidos: publish_stream y listo.
ResponderEliminarMinipunk Arias, una pregunta ya puedo publicar con la api pero ahora cuando pongo la URL directa para compartirla dentro de mi muro me apare ce : Uncaught OAuthException: (#200) The user hasn't authorized the application to perform this action thrown in /home/sigrid/public_html/src/base_facebook.php on line 1254 abajo de la URL o desde el boton Like en mi web tambien aparece : Uncaught OAuthException: (#200) The user hasn't authorized the application to perform this action thrown in /home/sigrid/public_html/src/base_facebook.php on line 1254, sabras por que es esto?, ya esta corregida la api, y esto ocurre cuando coloco directamente la url de la web. http://www.sigrid.mx, dentro de un post de mi muro
ResponderEliminarCReo que no tienes todos los permisos que deberías coger al autorizar tu propia aplicación.
EliminarGenial tio! Me has solucionado muchos dolores de cabeza, espero poder devolverte el favor algún día; un saludo y mil gracias!!!
ResponderEliminarGracias por tan agradable comentario Jose :-))
EliminarTengo un problema, he seguido todos tus pasos y me funciono a la perfección todo y así fue durante unos 3 días, ningun problema, pero ahora intento publicar y me sale el siguiente error:
ResponderEliminarFatal error: Uncaught OAuthException: (#1) An error occured while creating the share thrown in /home/xxx/public_html/publicar/src/base_facebook.php on line 1254
Lo raro es que tengo un archivo que solo publica mensajes y anda a la perfección, pero el que me crear los link me esta dando problemas :/
Yo el link lo paso así -->(string)$xml->channel->item[0]->link;
EliminarEl comentario y título del enlace con utf8_decode($xml->channel->item[0]->title);
Quizás sea por la codificación ;)
Hola, muy bueno todo me funcionó muy bien, lo que no se y agradecería me puedan ayudar es de crear una publicación de otro tipo en mi página, o sea quiero que sea similar a una publicación manual, agregando un texto y subiendo una foto; una ayuda de como lo puedo hacer, quiero agregar fotos grandes.
ResponderEliminarMuchas gracias!
Minipunk Arias,
ResponderEliminarBuenas noches, tengo una duda cree una pagina html en un servidor de interne y de ahi redirecciono a una jsp donde tengo un formulario que captura unos campos para ser enviados a una bd, mi pregunta es como comparto esta app con varias personas
por que solo me sale a mi, y debo volverla publica.
Muchas gracias
Si no quieres almacenar usuarios haz como yo, publica el código en alguna parte :-))
EliminarExcelente aporte pero tengo una duda o no se puede hacer:
ResponderEliminarYo creo una aplicacion facebook, una vez que la creo mis amigos la aceptan.
Supón que cinco amigos mios han aceptado esa aplicacion.
Ahora yo quiero publicar con php en sus muros. ¿eso es posible? o facebook ha eliminado esa posibilidad?
Imaginate que creo una aplicacion para tiempos de pruebas deportivas y diez amigos corren y se sus tiempos y quiero publicar en sus muros el tiempo que ha hecho cada uno.
Sacame de dudas por fa
gracias.
Si te fijas en el vídeo puedo publicar en más de una cuenta.
EliminarTendrás que guardar el token de cada amigo en una base de datos o archivo.txt para poder utilizarlo, pero si, sin problema ;)
Te lo comento porque he leido no se si tendrá que ver con esto que a partir de Abril de 2013 facebook quita la habilidad de postear en el muro de otras personas.
EliminarPosting on wall of the user´s friends is a deprecated functionality and will not be available anymore very soon, because in 99% of the cases it´s unwanted and spam.
En caso de que esté equivocado me puedes decir o dar un link de como averiguar el token de un amigo?
Gracias.
A ver, eso lo que hace es que TÚ escribes o publicas en su muro, no que escribas por él.
EliminarSi un usuario se loga es ÉL quien publica, no tú ;)
Cual es el codigo para publicar en varias paginas al mismo tiempo.?
ResponderEliminarCon más variables ;)
Eliminarde ma este error: OAuthException: (#368) The action attempted has been deemed abusive or is otherwise disallowed.
ResponderEliminarA alguien más le da ese problema?
Habrás infringido los límites de publicación o algo similar :-/
EliminarMi problema es que la aplicación que quiero hacer no quiero enviármelo a mi mismo ni a una pagina sino a un usuario en concreto y me funciona para mi con /me pero para enviar a otro usuario no sé si hace falta mas permisos pero le pongo el id_user y no me lo envía.
ResponderEliminarEn comentarios anteriores comentaban que desde abril facebook no lo permitiría.
Eliminarte puedes pasar el codigo del from si no fuera mucha molestia
ResponderEliminarSi claro, dame un par de días y lo cuelgo aquí ;)
EliminarHacia mucho que venia dando vueltas y no podia publicar en la pagina, solo poner un mensaje de texto normal. Me salvaste!!! GRAN POST!
ResponderEliminarMuchísimas gracias :)
EliminarCojonudo todo, pero más cojonudo es que respondas a todos ! Milgracias
ResponderEliminarjeje Gracias Pepe Lozano, alguna vez recuerdo haber dejado comentarios con preguntas y ni autor ni visitantes respondieron nunca, no me gustó, procuro evitarlo ;)
EliminarTodo bien pero en la url me figura Expiration Date=5.183.866 si esto esta basado en segundos darian unos dos meses de vigencia para ese Token, es asi no?. Saludos!
ResponderEliminarGran tutorial y gran aporte de los comentarios! Un 10 para todos ;)
ResponderEliminarHola a todos. Gracias por las indicaciones durante todo el post, junto a sus comentarios.
ResponderEliminarMi problema es que, obtengo el Token original del usuario, que administra una página donde publica automáticamente. Lo cierto es que durante la vida del Token original publica como si se hiciera desde la propia fanpage. A continuación, antes de que se caduque lógicamente, solicito el indefinido con el Token del usuario a través de la URL que indicáis arriba y lo guardo para futuras publicaciones. Cuando pasa el tiempo, se expira igualmente que el original.
No comprendo donde esta mi error.
Gracias y un saludo.
https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EL_TOKEN_DE_USUARIO
EliminarY se queda válido para siempre ;)
Muchas gracias. Ahora ya lo conseguí.
EliminarBuenas, muy bueno la verdad el post. Me funciona todo pero unicamente por el periodo que no me caduca el token. Yo necesito poder hacer post en una fan page de manera offline. Es decir cuando se desata un evento publico en la fan page. No necesariamente va a haber un usuario logueado en facebook y no necesariamente ese usuario va a ser administrador. Hay alguna forma de obtener el token actual en forma dinamica mediante los valores que no caducan que son la app id, page id y el secret? De ser asi me darian una mano enorme con algun ejemplo.
ResponderEliminarDesde ya muchas gracias.
https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EL_TOKEN_DE_USUARIO
EliminarY se queda válido para siempre ;)
Hola Minipunk he seguido todos los pasos. Todo perfecto, pero cuando intento hacer que no caduque el token poniendo la url que indicas la respuesta es la siguiente
Eliminaraccess_token=[NUEVO_TOKEN]&expires=5182490
Me despista el parametro expires, parece indicar que caduca en 60 días. ¿Es fiable ese parámetro? ¿A ti te aparece?
Muchas gracias, excelente post
Quita eso de expires o tendrás que renovar los tokens cada cierto tiempo
EliminarPero esto "access_token=[NUEVO_TOKEN]&expires=5182490" es la repuesta que devuelve la ejecución de la url que indicas.
ResponderEliminar¿Si solo utilizo el valor [NUEVO_TOKEN] será suficiente?
Muchas gracias y saludos.
No, tras hacer eso, haces esto otro:
Eliminarhttps://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EL_TOKEN_DE_USUARIO
Y ya se queda para siempre ;)
Muchas Gracias por el POST de lo mejor que encontré.
ResponderEliminarGracias!!!
Probad el nuevo token aquí https://developers.facebook.com/tools/debug y mirad donde pone caduca a ver que os sale :)
EliminarMinipunk a mi también me pasa lo que al anómimo...
ResponderEliminar1- Pongo esta url en el navegador siguiendo los pasos:
https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN
2- Però la respuesta que sale en el navegor tiene (como indica el anonimo) estos valores:
En una pantalla en blanco sale el texto "access_token=[NUEVO_TOKEN]&expires=5182490"
3- Me despista el valor expires... ¿Sabes que quiere decir?
Probad aquí https://developers.facebook.com/tools/debug y mirad donde pone caduca a ver que os sale :)
EliminarSegun el debug... caducó hace 2 meses?
Eliminaridentificación de aplicación:xxxxxxx
Metadata: []
identificador de usuario: xxxxxx
Emitido(a): 1370992516 (Hace 17 horas)
Caduca: 1376176516 (hace aproximadamente 2 meses)
Válido: True
Origin: Unknown
Ámbitos: create_note email manage_pages photo_upload publish_actions publish_stream share_item status_update video_upload
Buenas tardes! he hecho todo tal cual se indica, y he cambiado al final el id de mi perfil por el de la fanpage, y aunque no me sale error, me sale el archvio en blanco como si lo hiciera, peor e el fanpage no sale nada, y le di todos los permisos necesarios.
ResponderEliminarAlguien me podría orientar por favor?, adjunto código:
require_once 'src/facebook.php';
$app_id = '1905xxx937';
$app_secret = '9665a6bxxxxxxx68';
$token = 'CAACCktaEZA6UBALnmwjaXXXXXXXXX';
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => false
));
$req = array(
'access_token' => $token,
'message' => 'Sólo Amor y Art',
'name' => 'Madre, hija y espíritu.',
'link' => 'http://facebook.com/mipagina',
'description' => 'Madre, hija y espíritu.',
'picture' => '');
$res = $facebook->api("/".$app_id." /".$token."", "post", $req);
Picture lo tienes mal puesto, necesitas colocar la url de una imagen
EliminarHola tengo mi perfil en facebook y varias paginas.
ResponderEliminarEstoy intentando enlazar con la api y temgo ya mi ID y tl ToKEN, pero o no se que es el ID_DE_TU_PÁGINA.
$res = $facebook->api('/ID_DE_TU_PÁGINA/feed', 'POST', $req);
Me podeis echar un cable?..
gracias.
Pon en el navegador esto https://graph.facebook.com/me/accounts?access_token=TU_TOKEN y te da los tokens y los IDs de cada página ;)
EliminarMe sale esto:
Eliminar{
"error": {
"message": "Invalid OAuth access token.",
"type": "OAuthException",
"code": 190
}
}
Creo que puede ser un tema de permisos, pero no tengo esto muy claro.
Eliminarhe puesto https://graph.facebook.com/me/accounts?access_token= MI_TOKEN
y sale esto:
{
"error": {
"message": "Invalid OAuth access token.",
"type": "OAuthException",
"code": 190
}
}
antes he puesto esto
https://graph.facebook.com/oauth/authorize?type=user_agent&
client_id=ID_APLICACION&
redirect_uri=http://www.facebook.com/connect/login_success.html&
scope=offline_access,manage_pages,publish_stream,create_event
y me ha dado un mensaje :
Success
ADVERTENCIA DE SEGURIDAD: trata la dirección URL si fuera tu contraseña y no la compartas con nadie.
Perdona si te molesto.
Eliminarhe puesto esto: https://graph.facebook.com/me/accounts?access_token=MI_token
y sale una lista json con las paginas qu tengo:
supongo que el parametro ID (je: 402445606451293), es el que debo usar no?
"data": [
{
"category": "Industrials",
"name": "Almazaras y Minialmazaras Roque. Molinos, prensas y depositos.",
"access_token": "31231231231231231231231xxxx",
"id": "402445606451293",
"perms": [
"ADMINISTER",
"EDIT_PROFILE",
"CREATE_CONTENT",
"MODERATE_CONTENT",
"CREATE_ADS",
"BASIC_ADMIN"
]
},
{
"category": "Health/beauty",
"name": "Masajista malaga ( Quiromasaje y Osteopatia )",
"access_token": "6786786786786786787686xxxxxxx",
"id": "448692135155518",
"perms": [
"ADMINISTER",
"EDIT_PROFILE",
"CREATE_CONTENT",
"MODERATE_CONTENT",
"CREATE_ADS",
"BASIC_ADMIN"
]
},
-------------------------------------------------------
$res = $facebook->api('/ID_DE_TU_PÁGINA/feed', 'POST', $req);
$res = $facebook->api('/402445606451293/feed', 'POST', $req);
$app_id = '304973406299708'; // Sustituimos las X por el ID de nuestra aplicación
$app_secret = '706ec6b09109cba804eed90f5312cf82'; // Sustituimos las X por el Secret de nuestra aplicación
$token = 'chorizo_de_token....'; // ponemos nuestro token
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => false
));
$req = array(
'access_token' => $token,
'message' => 'Mensaje de prueba con mi aplicación');
$res = $facebook->api('/402445606451293/feed', 'POST', $req);
Hola Minipunk la verdad muy interesante tu post, estaba buscando esto, te hago una consulta, es necesario tener una pagina web con certificado SSL para asociarla a la app que creamos para poder realizar esto? Soy nuevo en esto y estoy tratando de comprender un poco! Saludos!
ResponderEliminarHola Hugo, no, no es necesario, eso lo necesitarías en el caso de añadir la aplicación que crees a una pestaña de facebook, en ese caso si, para esto que vemos aquí no ;)
EliminarHola me sirvio de mucho este post.. y tambien los comentarios para poder obtener un link que dure 60 dias.. pero tengo una pregunta.. en facebook cuando publicas manualmente se puede publicar un dia especifico por ejemplo el dia de mañana a las 3 de la tarde.. esto es posible con el api?
ResponderEliminarSi, algo he visto, si que se puede, pero tendría que buscar un ejemplo, si hago algo te respondo por aquí.
Eliminarhola tengo una duda, dice que tengo que ser administrador de la pagina que quiero que publique, pero si solo era un CREADOR DE CONTENIDOS? y ya no estoy en la pagina, pero tengo el ID puedo publicar?
ResponderEliminary otra duda tengo que desde la pagina acepatr los permisos de la aplicacion o no es necesario?
Si, tienes que aceptar los permisos o no puedes publicar.
EliminarRespecto a ser creador de contenidos... como tú eres el primer caso esperaremos a ver que tal resultado te da porque los demás no lo sabemos :-))
Hola a todos.
ResponderEliminarLa verdad es que es un tutorial muy práctico. Pero ahora hay que dar un paso más en mi caso y necesario publicar una imagen de una fanpage y aun no he conseguido adaptar el código. ¿Alguna referencia para poder hacerlo?
Gracias y un saludo.
Con la imagen en tu mismo hosting:
Eliminarrequire_once 'src/facebook.php';
$filename = "foto.jpg";
$text ="Mensaje que es el comentario que va con la foto";
$app_id = 'TU_ID';
$app_secret = 'TU_CSECRET';
$access_token = 'EL_QUE_SEA';
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
$facebook->setFileUploadSupport(true);
$req = array(
'access_token' => $access_token,
'message'=> $text,
"source" => '@' . realpath($filename)
);
$res = $facebook->api('/ID_DE_TU_PAGINA/photos', 'post', $req);
Saludos, interesante el post. Venga, aprovecho para preguntarles algo, recien estoy necesitando una app que publique contenido flash en los muros de los usuarios, en los docs de Developers encontré esto: https://developers.facebook.com/docs/howtos/feed-gaming/ Oh, si, en las pruebas funciona perfecto, requiero tal cosa, pero no veo que hacer.
ResponderEliminarLa aplicación la necesito para embedir player flash de mis clientes de streaming.
si tienen alguna información que me puedan facilitar, se los agradezco.
Eso es diferente, deberías crear una aplicación de pestaña de facebook.
EliminarHola, excelente blog pero tengo un problema, como tendria que hacer si quiero administrar las fanpage de varios perfiles con esta app??
ResponderEliminargracias
con variables, una variable por cada página con su token y su ÏD
EliminarYuppy!!! lo logré!! mil gracias Minipunk!
ResponderEliminarDe nada mujer, para eso lo he publicado, ahora haz que no caduque el token, lee el primer comentario ;)
EliminarPrimero que nada felicitarte y agradecerte por tan clara y prolija explicación. Realmente has ayudado a muchos.
ResponderEliminarEn este momento me funciona sin problemas para publicar en una de mis páginas, pero solamente funciona con el campo 'message', no me deja agregar ni links, ni imágenes ni nada por el estilo. Tienes idea que puede ser?
Pues no, si te deja una cosa debería dejarte la otra...
EliminarQuita los token secretos y pega el resto del código en http://pastebin.com/ y déjamelo ver a ver si encuentro un error o algo ;)
Hola, excelente post...tengo un problema cuando hay que darle permisos para administrar paginas y publicar en el muro...cuando clickeo el boton de "get access token" realiza una pequeña carga y no me abre la ventana q mostras en las capturas de pantalla...alguien sabe porque puede ser?...saludos...
ResponderEliminarMil disculpas...estuve probando 2 dias seguidos sin resultados positivos y despues de publicar mi duda intente nuevamente y salio andando...ja...perdonen las molestias...saludos...
ResponderEliminarHola, excelente tutorial! mil gracias...
ResponderEliminarte molesto con un apregunta....
al querer subir una imagen a la pagina, me sale el siguiente error:
Fatal error: Uncaught OAuthException: (#200) Subject does not have permission to post photos on this page thrown in C:\xampp\htdocs\administration\src\base_facebook.php on line 1271
me imagino que debe ser que me faltan permisos, como puedo modificar los extended permision o los que tenga que modificar?
Hola:
ResponderEliminarExcelente tutorial. Ya tengo aotumatizados mis publicaciones en una página de facebook con links, imagenes, videos aparentemente sin problemas.
Lo que sucede es, que solamente los uauarios que le han dado a "me gusta" ven lo que subo a través de la API. Si lo publico con el perfil de mi página, desde mi cuenta personal , lo ve todo el mundo incluso sin hacer login a facebook.
Cómo puedo hacer que lo que publico conla API, lo vea TODO EL MUNDO ?
Muchísimas gracias
Hola:
ResponderEliminarYa lo he arreglado, hay que desactivar el Sandmode ...
Muchas gracias por el aporte AVC :)
EliminarEste comentario ha sido eliminado por el autor.
EliminarDonde desactivo eso en mi aplicación o en la cuenta de facebook !
Eliminarlogro publicar en facebook pero nadie puede ver mis publicaciones .
Buenas tardes,
ResponderEliminarEn primer lugar darte las gracia por el tuto. ahora el problema:
Llevo un par de dias intentando que el token no caduque nunca y me resulta imposible, he seguido los pasos comentados pero nada de nada.
Les dejo la respuesta al introducir el link con el token de facebook.
url de la pagina:
https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=CAAIL1pVZCHpwBAKz4S90Lz1v3NateML0oXR4ZCnxZAZA3YpSZBD2ZCSYIZBz2Hk4u2vr2GqsVv0ePdCJLxHtw72qvbClewvjPf42zZA5tALV7i4ifR0ureAOTM2e6RHDW4CPlZB7JKHPrsedB4ca8isI7pYMZBNLok4H5hO1Vz512aSUY44s6bZB9219qnsQZBd0LKd8MlJKNaIGGQZDZD
{
"error": {
"message": "Error validating application. Invalid application ID.",
"type": "OAuthException",
"code": 101
}
}
Cuando vas a generar o renovar el token fíjate en un despegable en la parte superior a ver con que aplicación estás trabajando, si aún así no te sale, elimina y crea de nuevo la aplicación, le sucedió hace poco a un amigo mio, pero revisa el desplegable que te comento ;)
EliminarGracias por responder tan rápido, ya encontre el fallo pero ahora lo maximo que me da son dos meses de vida en el token y no se porque al resto le sale ilimitado, :(
ResponderEliminarHe leído por ahí que a las aplicaciones nuevas les quieren poner ese límite, incluso a la suya propia para smartphone habrá que renovar el token :-/
Eliminaroks, Gracias pero sabes si hay alguna forma de renovar el token automaticamente?
EliminarGracias por tu trabajo. :D
No, automático no lo permite, porque para cualquier perfil hay que acceder a una ventana emergente y pulsar el botón que va con javascript por lo que se precisa la presencia manual del usuario :-/
EliminarHola queria saber si alguno conoce algun codigo php para face para mostrar la lista de amigos y canales gracias
ResponderEliminarHola Minipunk... Gracias por compartir...
ResponderEliminarMe gustaría saber si conoces (de existir) alguna manera de compartir imágenes en Facebook desde mi web?? algo así como este tutorial, pero en vez de compartir un post que sea una imagen.
Muchas gracias.
hola muy bueno tu post amigo me funciono, solo que tneog un detalle que por mas que he buscado no logro componer ya que si me postea el script en mi fanpage el problema y lo mas raro desde mi punto de vista es q estos enlaces solo los logro ver yo o.O ya corrobore con otra cuenta de face y efectivamente no me salen ninguno de los enlaces podrias ayudarme?
ResponderEliminarjajaja bueno esto es vergonsozo.. XD consejo asegurense que el sandbox mode este desactivado jaja
EliminarEn tu perfil tienes un apartado de aplicaciones y en cada aplicación una configuración de privacidad, tienes que poner la tuya pública.
EliminarAlguien sabe por qué sale este aviso:
ResponderEliminarADVERTENCIA DE SEGURIDAD: trata la direccion url como si fuera tu contraseña
Muchas Gracias
Nunca lo he visto, ¿Lo pondrá tu navegador?
EliminarMuy buenas,
ResponderEliminarno encuentro la forma de poder publicar contenido en mi página de facebook desde mi página web, he seguido los pasos del tutorial, pero a la hora de ejecutar el código para publicar nuevo contenido en facebook, me salta el error : Uncaught OAuthException: (#10) Application does not have permission for this action thrown in...
He comprobado la configuración y permisos de la app de facebook y aparentemente está todo correcto, espero que podáis orientarme, por cierto antes de enviar la publicación a facebook se ha de hacer login en mi página web con el usuario de facebook?
saludos y gracias!
Bueno al fin he conseguido solucionarlo!, un error de sintaxis se había colado en mi código jajaja
EliminarPor cierto Minipunk, gracias por el post!
Me alegro mucho :-))
EliminarHola alguien sabe como publicar imágenes en el muro de la fan page y que se vean grandes? igual que si le das a publicar: Foto / Vídeo
ResponderEliminarConseguí subir una imagen a un album así:
$facebook->setFileUploadSupport(true);
$ruta = 'RUTA DEL ARCHIVO EN EL SERVIDOR';
$file = '@' . realpath($ruta);
$attachment = array('source' => $file, 'access_token' => $ACCESS_TOKEN);
$result = $facebook->api('/'.$album_uid.'/photos', 'POST', $attachment);
el $album_uid se puede conseguir así:
$albums = $facebook->api('/'.$PAGE_ID.'/albums');
foreach ($albums['data'] as $album) {
if($album['type'] == 'profile'){
$album_uid = $album['id'];
}
}
Lo demás todo igual, ahora me falta pasar esa foto del album al muro como si publicase una nota normal, alguien sabe como?
Saludos
Hola de nuevo, ya conseguí hacer lo que quería, solo tenia que cambiar de album así:
Eliminarif($album['type'] == 'profile'){
$album_uid = $album['id'];
}
por esto:
if($album['type'] == 'normal'){
$album_uid = $album['id'];
}
otro album
Saludos
Muchas gracias por el aporte, lo sumamos :-))
EliminarHola que tal Minipunk gracias por el tutorial, me funciono sin problemas, pero lo que necesito es que al momento de publicar desde la app se publique con el nombre y la foto del usuario de la cuenta de facebook, es decir que necesito tomar el token del usuario, ya lo logre hacer manualmente es decir obtener el token especifico, pero quiero que esto se haga automáticamente es decir que la app tome el token la ponga como variable y publique en nombre del usuario. No se si me hice entender pero llevo algunos días intentando sin lograrlo y quisiera que me des una ayuda mas porfa :-) gracias de antemano.
ResponderEliminarNecesitas capturar el token y guardarlo en una base de datos... A ver si mañana puedo prepararte un ejemplo :-)
EliminarExcelente Artículo, felicidades.
ResponderEliminarUna duda: al usar:
https://graph.facebook.com/me/accounts?access_token=MI_TOKEN me devuelve un array vacio.
Hola, Gracias por la info. solo que revise y encontre que Facebook ha desaprobado el offline_access manera, por lo que este método ya no funciona! lo maximo que puede dar es 60 días.de expiracion del token
ResponderEliminarhola como estas mira por casualidad sabes si se tiene que tener un vps y no hosting compartido ya ahora pide https porque no logro hacerlo funcionar
ResponderEliminarmuchisimas gracias!
ResponderEliminarme ahorraste un monton de tiempo!!
Saludos!
Excelente, me sirvio muchisimo
ResponderEliminarPara los que al tratar de que el TOKEN no expire usando la URL les aparece la pantalla en blanco con el texto "access_token=[NUEVO_TOKEN]&expires=5174125" o cualquier otro valor de expires=#, comento:
ResponderEliminarOriginalmente es emitido un TOKEN de un tiempo de vida corta, que luego al tratar de ampliar su tiempo de vida mediante la mencionada URL colocandole los datos de la app (ID y SECRET) + el TOKEN lo unico que logran es extenderlo 2 meses solamente.
El valor de expires es el tiempo de vida de este nuevo TOKEN entregado como respuesta a la URL
y esta expresado en segundos con lo cual si lo calculan dentro del buscador de google (si es calculadora tambien), "5174125 segundos a meses" les va a decir "1,96753955 meses" que tiene de vida de esa TOKEN
Si vamos a la fuente, facebook, lo aclara pero en ingles
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/#page_access_token
En concreto lo que dicen es que hagas toda la operacion de la URL para un TOKEN de corta vida y que usen ese nuevo TOKEN, el cual no caducara por el tiempo indicado.
y cuando expire repitas la operacion pudiendo o no ser el mismo TOKEN.
Asi que no se vuelvan locos como yo y usen ese TOKEN y en dos meses vemos ;)
Hola Minipunk, tengo un pequeño problema con mi aplicación siguiendo los pasos que indicas en el tutorial.
ResponderEliminarCuando llega el momento de asignarles los permisos a la aplicación, puedo seleccionarles todos, darles a aceptar y que me asigne un access token.
Lo curioso es que, cuando vuelvo a decirle que me de la clave de acceso, el public_stream me aparece desactivado.
Obviamente, cuando hago la prueba de envio para
/ID_PAGINA/feed,"post", me arroja el siguiente error: The user hasn't authorized the application to perform this action.
La id de página es la que me devuelve el /accounts?access_token= como comentabas con ese access token que aparece
Imagino que es por eso, los permisos, pero no se en donde tengo que configurar permisos si en la página cualquiera puede publicar, y no hay restricciones. ¿hay que configurar algo adicional en los permisos del developer?
En facebook, antes de coger el token, en la tercera imagen de este post lo ves ;)
EliminarEn esa ventana no hago más que pulsarle al publish_stream, darle a aceptar, y cuando vuelvo a entrar para comprobarlo en la misma ventana, me aparece desactivado, con todas las otras opciones que indicas activadas. Y mira que le he dado también a "clear" para darle un reset, y nada.
ResponderEliminarMe voy a opciones de la página donde quiero publicar y tiene activado "cualquiera puede publicar" y ese usuario que utilizo es administrador de la página. Todo muy raro.
Le sucedió a un amigo, lo que tienes que hacer es crear una aplicación nueva :-/
EliminarEsa, por lo que sea da fallo, seguro que en el desplegable que tienes más arriba te sale como aplicación que estás editando la oficial de facebook, prueba a crear una nueva y seguir estos pasos en la nueva ;)
Ya tengo el metodo para obtener un token ETERNO!!! y con un simple archivo php ;)
ResponderEliminarEn la brevedad lo publicare en mi blog (perdon minipunk pero no queda bien como un comentario, ademas de que no utilice tu codigo), que bastante olvidado lo tengo y de paso explico el uso de FQL y demas menesteres como pubicar en varias fanpage e inclusive la publicacion a Twitter!!!
Para los impacientes que quieran se ponen en contacto conmigo y listo, mientras tanto a esperar
a, mi blog es http://www.pcdirck.com/blog
Saludos
Hola, me gustaría conocer ese método!
EliminarHola, me gustaría conocer ese método!
EliminarHola, me gustaría conocer ese método!
EliminarHola, me gustaría conocer ese método!
EliminarHola, me gustaría conocer ese método!
EliminarHola, me gustaría conocer ese método!
EliminarHola, me gustaría conocer ese método!
EliminarHola, me gustaría conocer ese método!
EliminarMinipunk buenas tardes, ¿como puedo borrar contenidos de la fanpage via api? Lo estoy intentando con DELETE pero no me deja.
ResponderEliminarTengo que mirarlo, en cuanto pueda te respondo.
Eliminarhola quiero hacer una app para poder publicar en mis grupos simultaneamente, es posible??
ResponderEliminarSi, claro, con tener varios IDs ya lo publicas en cada ID.
EliminarHola buenas Tardes tengo un pequeño problema
ResponderEliminarDe antemano Muchas Gracias por el excelente tutorial
El código funciona perfectamente i publica en la fan page pero, solamente yo puedo ver lo publicado, es decir si otra persona entra a mi fan page no se ve lo que mando desde mi pagina web, pero si publico desde mi fan page si lo ve todo el mundo
Este es mi codigo
require_once 'facebook/src/facebook.php'; //Esto llama a la carpeta con el parse que nos descargamos antes
$app_id = '36xxxxxxxxxxx01'; // Sustituimos las X por el ID de nuestra aplicación
$app_secret = 'daxxxxxxxxxxxxxxxxxxxxxxxxxx5'; // Sustituimos las X por el Secret de nuestra aplicación
$token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxcxmArKYJ0W4LJJBvSqkVu8pWce0FhdaaB5I84ZC5MaYCZB3l39nSwW2QJKwJexKrP3bypKiZCIoers30AuxeIS0ZCq2ngKMjCBn6zAiudEySlRKwjM0mjQ'; // ponemos nuestro token
$masage = '';
$name = $row_not['strTitulo'];
$link = $row_not['str_Enlace_Bit'];
$description = $row_not['strPar_Corto'];
if ($row_not['strImagen_01'] != '') {
$picture = 'http://www.ixxxxxxxx.com/imagenes/noticias/'.$row_not['strImagen_01'];
} else if ($row_not['strImagen_02'] != '') {
$picture = 'http://www.xxxxxxxxx.com/imagenes/noticias/'.$row_not['strImagen_02'];
} else {
$picture = 'http://www.xxxxxxxxx.com/imagenes/noticias/'.$row_not['strImagen_03'];
}
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => false
));
$req = array(
'access_token' => $token,
'message' => $masage,
'name' => $name,
'link' => $link,
'description' => $description,
'picture' => $picture,
);
$res = $facebook->api('/45xxxxxxxxxx731/feed', 'POST', $req);
Creo que ya lo resolviste, por si otra persona lo lee, que entre en https://www.facebook.com/appcenter/my y en la configuración de su propia aplicación gestione la visibilidad de las publicaciones (¿Quien puede ver, mis amigos, solo yo, puúblico, etc...)
EliminarGracias ya resolví con la publicación anterior del Sandbox Mode
ResponderEliminarMuchas gracias por ti tutorial
hola muchas gracias por el tutorial, una pregunta como hago para que me funcione con el cron pues una vez que me desconecto de facebook ya no me publica nada! :( osea funciona esto para trabajar sin conexión
ResponderEliminarEn tu servidor, donde alojas los archivos, en el CPanel tienes un apartado que se llama CRON o TAREAS
EliminarMuchas gracias! me funciono todo perfectamente siguiente tu tutorial :)
ResponderEliminarMuchas gracias, me haces sentir útil :)
EliminarEstimado Minipunk, muuuchas gracias por tan valioso apoyo.
ResponderEliminar¿Será que me puedas ayudar con una duda?... cuando hago eso de que el token nunca caduque...
https://graph.facebook.com/oauth/access_token?client_id=Mi_ID_Aqui&client_secret=Mi_ID_Secreto_Aqui&grant_type=fb_exchange_token&fb_exchange_token=Mi_Token_Aqui
Me aparece este error....
{
"error": {
"message": "Error validating access token: Session has expired on 16 de enero de 2014 10:00. The current time is 16 de enero de 2014 14:58.",
"type": "OAuthException",
"code": 190,
"error_subcode": 463
}
}
¿Qué crees que pase canijo?
Reautoriza primero tu token desde el panel y con el token nuevo haz eso para que no caduque ;)
EliminarListo, ya quedó estimado Minipunk, pero ahora cuando publica algo y entro con otro usuario que tengo de Facebook NO puedo ver la publicación, ¿qué podría hacer?
EliminarMuchas Gracias
Ok, para todos aquellos que les pase lo mismo que a mi, les cuento, una vez que logran que se pueda publicar de forma atomática en su muro, algunos NO podrán ver dicha publicación desde otra cuenta, para eso, deben ir a:
EliminarPestaña de Aplicaciones / Status & Review /
Do you want to make this app and all its live features available to the general public? / Le dan que SI y así ya todo el mundo podrá ver sus mensajes.
Muchas gracias Minipunk por este ejemplo, de verdad has ayudado a muchos (incluyéndome)
Muchas gracias por tu aportación :)
EliminarHe conseguido configurar una herramienta que publica por mí en Facebook en los grupos pero Tengo un ploblema con las imágenes me aparecen en un cuadradito pequeño al lado del vínculo. Y me gustaría que apareciera la imágen en grande y debajo el vínculo. Alguien me puede ayudar para saber como hacerlo?
ResponderEliminarEn cambio en el móvil si se ven Bien. En Grande la ímagen y el vínculo debajo pero en el ordenador no.
EliminarOtra opción podría ser que publicara un enlace y esperara un segundo antes de ejcutar la acción de publicar para que Facebook mismo cogiese la foto que hay en el vínculo... Pero no se como podría hacerlo
EliminarHola gracias por el post, no se si me puedes ayudar, e seguido todos los pasos que pusite pero a la hora de ejecutar el index me sale: Fatal error: Uncaught CurlException: 7: Failed to connect to 255.255.255.255: Network is unreachable thrown in /home/vol11_7/vzpla.net/user_14194355/htdocs/facebook/src/base_facebook.php on line 1035
ResponderEliminarE tratado de buscar alguna solución y no se si es un problema de mi host, o de mi conexión; ojalá me ayudes y en todo caso si es un problema de host, me podrías recomendar alguno gratis. Gracias
Este comentario ha sido eliminado por el autor.
EliminarEste comentario ha sido eliminado por el autor.
Eliminarbueno y para que me sirve esto??
ResponderEliminarsoy nuevo cuéntame, para que finalidad es esto¡¡¡?? pa escnderme de la novia?? o como¡?
ResponderEliminarHola Minipunk, mira yo quiero que el token de fb nunca expire lo cual por lo que lei que publicaste ingrese a:
ResponderEliminarhttps://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN.
El tema es que cuando me genera el token en la pagina a lo ultimo dice algo como expires y un numero:
CAAGpnfimE...........ewBAACuzTtRjnyZBvD&expires=5213842
Este sería el tiempo en el que expiraría dicho token? porque este número que me tira es menor a un año... y lo que quiero es que nunca expire para evitar errores a futuro.
Gracias....
una de las cosas que quisiera lograr es cambiar la portada ( cover) de fanpages de facebook pero de modo automatico, imagino que con esto se podria pero de verdad me confundo con tanto codigo.
ResponderEliminarHola exelente tutorial, gracias or publicarlo, una pregunta tengo un problemita: mi necesidad es publicar productos desde una sola pagina a facebook pero me sale este error:
ResponderEliminar"Fatal error: Uncaught OAuthException: Error validating access token: The session is invalid because the user logged out..., me podrias ayudar? gracias otra vez
Excelente tutorial Minipunk, estoy tratanto de implementarlo pero me da un error:
ResponderEliminar"Fatal error: Uncaught CurlException: 7: couldn't connect to host thrown in /home/xxxx/public_html/v2/src/base_facebook.php on line 1012"
Si es que me podrías ayudar o alguien que sepa como resolverlo.
Desde ya gracias...
Hola a todos, he leído algunos comentarios anteriores y encontré que otros tuvieron el mismo problema y como Minipunk había respondido a esa cuestión, el problema realmente es con el proveedor de hosting, lo cambie y funcionó perfectamente.
EliminarExcelente Minipunk... gracias por tu aporte.
Buenas Tarde Amigo Saludo desde Venezuela Te escribo por el siguiente motivo siempre y cuando usted pueda ayudarme estoy haciendo una aplicacion web una pagina la cual la alimenta un sistema donde el usuario guarda toda su informacion el caso es que quiero publicar en mi propio muro del facebook las promociones que estan alojada en una base de datos algo parecido al video tutorial que hiciste en la parte donde publica en tu propio muro con el video con la foto el titulo etc ya tengo un api y api secret como obtengo el token para que sea permanente y pueda publicarme en el muro del facebook al dar clik en el boton guardar cuando se envia a la base de dato sera tan amable si me puedes eyudar o enviarme ese mismo ejemplo que tienes en ese video te lo agradeceria de corazon... Espero Una pronto Repuesta... Ing.Aparicio Jose
ResponderEliminarHola, gracias por el tutorial. Pero tengo un problema hago todo exactamenet como dices, obtengo el token de página puedo publicar y incluso comentar algunso posts con la api mediante la opcion
ResponderEliminar$facebook->api('/'.$_REQUEST['facebookid'].'/comments', 'post', $msg_body );
El problema es que los post simples de texto de cambio de estado todo ok. Pero si alguien postea una imagen con un comentario e intento comentar esa publicación con la linéa de arriba me da el error: (#200) Permissions Error oauthexception.
En el token tengo todos los permisos, de hecho puedo publicar y comentar posts pero si el post tiene imagen nada de nada.
Obtengo los datos con $daFeed = $facebook->api("/$pageId/feed");
el de tipo texto cuando lo lo leo es: type": "status", y el otro es "type": "photo", el caso es que no puedo comentar el segundo y no se porque.
Se que es complicado, estoy desesperado y ya no se que hacer.
Si alguen puede ayudar, gracias.
Mañana hago una prueba para comprobarlo.
EliminarEntretanto prueba ha hacer un var_dump() a ver que valores te devuelve y si la photo tiene algún id más además de la imagen...
Eso aún no lo he probado.
Gracias por responder.
EliminarYo solicito los datos de la siguiente forma:
$facebook->api("/$pageId/feed");
Las unicas difrencias que veo es que en array que devuelve el que tiene foto y no puedo comentar:
"id": "1445840755661613_1445883322324023",
"message": "comernatir sobre foto.",
"type": "photo",
"status_type": "added_photos",
"object_id": "1445883268990695",
y el que sí puedo comentar:
"id": "1445840755661613_1445882918990730",
"message": "registro actividad",
"type": "status",
"status_type": "mobile_status_update",
Cuando comento uso el facebookid que será la segunda parte del id de arriba.
Me acabo de dar que cuenta que sí hay un id extra en el de la foto, el object_id. Voy a probar este en vez del id del post. Quiza si es tipo photo o story haya que usar ese, pero no dice nada en ningun sito.
Lo pruebo y te comento
Gracias de nuevo.