php - resumida - linea del tiempo historia de facebook
Mostrar un suministro de noticias/lĂnea de tiempo de Facebook en un sitio web (6)
Tengo un cliente que quiere que se muestre la fuente de noticias / línea de tiempo de Facebook de su compañía en su sitio web. No es una línea de tiempo personal / suministro de noticias, sino de una organización.
Todo lo que he leído parece tener algunos años, pero el resultado parece ser: Facebook quiere mantener todos sus datos en sus propios servidores: no quieren que la gente lo exporte, y se ha prohibido a las personas que lo intenten. (Como digo, esta información tenía varios años).
Lo más cercano que he encontrado es el complemento de feed de actividad , pero eso solo registra las interacciones de otros usuarios con el sitio o una aplicación de FB.
¿Alguien ha tenido éxito al exportar sus actualizaciones públicas a un sitio web externo, o tengo que decirle a mi cliente que no se puede hacer?
¡Gracias por cualquier ayuda!
Definitivamente se puede hacer. Solo necesita obtener un token de acceso a través de Facebook y luego puede acceder a un feed de publicaciones JSON a través de la API de Facebook.
Debe ir al sitio del desarrollador de Facebook y hacer clic en Aplicaciones en la parte superior. Siga los pasos para obtener una aplicación secreta e ID de cliente. Luego simplemente colóquelos en la siguiente URL y devolverá su token de acceso:
Instrucciones paso a paso aquí: http://smashballoon.com/custom-facebook-feed/access-token/
Este documento detalla los pasos para obtener los tokens de acceso de Facebook y el uso de los tokens para recuperar los feeds de FB.
Ejemplo: un ejemplo en vivo está disponible en
Introducción a Graph API: Graph API es la forma principal de obtener datos dentro y fuera de la plataforma de Facebook. Es una API de bajo nivel basada en HTTP que puede usar para consultar datos, publicar historias nuevas, administrar anuncios, cargar fotos y una variedad de otras tareas que una aplicación podría necesitar hacer.
Aplicaciones de FaceBook:
Crea una aplicación de Facebook Obtendrás App_Id
y App_Secret
Graph API Explorer:
https://developers.facebook.com/tools/explorer/
{{App_Id}}
/?method=GET&path=me%2Ffeed&version=v2.8
Obtendrás un access_token
que es efímero. Así que este será nuestro short_lived_access_token
.
Nota: al crear el token de acceso, seleccione todos los campos fb que necesite. Esto dará permiso al token de acceso para recuperar esos campos.
Extensión de token de acceso:
https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id= {{App_Id}} & client_secret = {{App_Secret}} & fb_exchange_token = {{short-lived-access_token}}
Obtendrá un access_token
con una validez de 2 meses.
Depurador de testigos de acceso:
https://developers.facebook.com/tools/debug/accesstoken?q= {{access_token}} & version = v2.8
Puede verificar los detalles de access_token
.
SDK de Facebook para JavaScript: incluya el siguiente JavaScript en su HTML para cargar asincrónicamente el SDK en su página
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, ''script'', ''facebook-jssdk''));
Graph API: hagamos una llamada a la API para obtener nuestra identificación de FB, foto de perfil, foto de portada y feeds.
window.fbAsyncInit = function () {
FB.init({
appId: ''{{App_Id }}'',
xfbml: true,
version: ''v2.7''
});
FB.api(
''/me'',
''GET'', {
fields: ''id,picture{url},cover,feed'',
access_token: {{access_token}}
},
function (response) {
if (response.error) {
console.error(response.error.message);
}
if (response.picture.data.url) {
profilePic = response.picture.data.url;
}
if (response.cover.source) {
coverPic = response.cover.source;
}
if (response.feed.data) {
feeds = response.feed.data;
feeds.forEach(function (feed) {
// view each feed content
});
}
if (response.feed.paging.next) {
nextFeedPage = response.feed.paging.next;
// a request to nextFeedPage will give the next set of feeds
}
}
);
};
Use el Graph API Explorer para diseñar su consulta que debe ingresarse en los ''campos'' (p. Ej .: ''id, picture {url}, cover, feed'')
Ahora puedes buscar tus datos de Facebook desde Facebook Graph API usando tu access_token.
Consulte https://developers.facebook.com/docs/graph-api/overview/
Nota: su access_token
caducará en 2 meses. Crea un nuevo access_token después de eso.
La forma más fácil de hacerlo es leer el RSS de la línea de tiempo de Facebook:
function FacebookFeed($pagename, $count, $postlength) {
$pageID = file_get_contents(''https://graph.facebook.com/?ids=''.$pagename.''&fields=id'');
$pageID = json_decode($pageID,true);
$pageID = $pageID[$pagename][''id''];
ini_set(''user_agent'', ''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9'');
$rssUrl = ''http://www.facebook.com/feeds/page.php?format=rss20&id=''.$pageID;
$xml = simplexml_load_file($rssUrl);
$entry = $xml->channel->item;
for ($i = 0; $i < $count; $i++) {
$description_original = $entry[$i]->description;
$description_striphtml = strip_tags($description_original);
$description = substr($description_striphtml, 0, $postlength);
$link = $entry[$i]->link;
$date_original = $entry[$i]->pubDate;
$date = date(''d-m-Y, H:i'', strtotime($date_original));
$FB_feed .= $description."…<br>";
$FB_feed .= "<small><a href=''".$link."''>".$date."</a></small><br><br>";
}
return $FB_feed;
}
Puede recuperar el suministro de noticias de la organización utilizando Graph API de Facebook. La línea de tiempo no se puede recuperar a través de una API pública.
No hay un complemento para hacer esto. Deberías llamar
https://graph.facebook.com/USER_ID/home
que te da una respuesta JSON.
Luego debe analizar el JSON en un nuevo diseño en la página web de la organización.
Confusamente, llamando
https://graph.facebook.com/USER_ID/feed
no recupera el suministro de noticias, sino las publicaciones en el muro de un usuario, que pueden ser o no lo que usted desea.
Here hay un tutorial que describe los aspectos básicos de la creación de un suministro de noticias en un sitio web con php.
Sí, se puede hacer. Primero registre el sitio web en la página de desarrolladores de Facebook. Entonces puedes usar cualquier API adecuada para interactuar con FB. A veces hace uso de SpringSocial (ya que estaba trabajando estrechamente con Spring) ... Puedes usar la propia API de FB, que también es muy útil. Puedes leer el tutorial here
AFAIK, es posible, en cierto modo. La solución más simple, pero no la mejor para su situación, podría ser el complemento Like Box :
Like Box permite a los usuarios:
Vea cuántos usuarios ya le gusta esta página y a cuál de sus amigos también le gusta
Leer publicaciones recientes de la página
Como la página con un solo clic, sin necesidad de visitar la página
Mejor solución: use su Graph API ; sin embargo, solo puede leer los datos (como JSON), no tener la secuencia exactamente replicada en el sitio web de su cliente, no espere poder aplicar los estilos que usa facebook (es decir, no ganó) ser capaz de rasparlo), tendrá que replicarlo o crear sus propios estilos.
Ahora bien, si la página es pública y todos pueden leerla, ya que no hay reglas de privacidad, simplemente puede llamar a la url con cualquier access_token válido (también puede ser access_token de la aplicación):
https://graph.facebook.com/<clientpagename_OR_id>/feed
o
https://graph.facebook.com/<clientpagename_OR_id>/posts
dependiendo de lo que necesite exactamente, intente con el explorador de API de gráficos para verificarlo (y también para ver el tipo de datos que se devuelven). Cuando hay muchas publicaciones, habrá urls de paginación, que también podrá ver en el explorador.
En caso de que la página no sea pública, necesitará un access_token con el permiso read_stream, por lo tanto, deberá crear una aplicación de Facebook , de tipo sitio web. Luego, obtenga el administrador de la página de su cliente para autorizar la aplicación, con el permission read_stream
. Después de eso, puede llamar a las URL con el access_token que recibe después de la autenticación y puede seguir leyendo la secuencia.
https://graph.facebook.com/<clientpagename_OR_id>/posts?access_token=thetoken
En este caso, use el PHP SDK , para simplificar la autenticación y llamar a la API de gráficos.
Enlaces importantes: Guía de autenticación , Real-time-updates .
Buena suerte.
Editar: necesita un token de acceso para acceder a las conexiones de feed o posts, pero no necesita necesariamente un token de acceso para leer el objeto de la página en sí, como se indica en esta documentación .
Nota del doc:
Para las conexiones que requieren un token de acceso, puede usar cualquier token de acceso válido si la página es pública y no está restringida. Las conexiones en páginas restringidas requieren un token de acceso de usuario y solo son visibles para los usuarios que cumplen con los criterios de restricción (por ejemplo, edad) establecidos en la página.