Actualmente estoy usando jQuery para registrar cada clic en un enlace para compartir de Facebook en mi sitio, pero estoy buscando una solución más precisa. En lugar de registrar los clics, me gustaría registrar las "participaciones" reales. ¿Hay alguna forma de recibir un mensaje de respuesta de Facebook después de que el usuario comparte un enlace?
Me encontré con esto hoy: http://graph.facebook.com/http://stackoverflow.com
Devuelve un recuento total de recursos compartidos para una URL específica. Tengo direcciones URL únicas para cada usuario en mi aplicación, por lo que puedo rastrear sus acciones fácilmente al usar esto.
También funciona para twitter: http://urls.api.twitter.com/1/urls/count.json?url=http://stackoverflow.com
Mientras permanezca activo, puede usar el cuadro de diálogo " Feed " de Facebook en lugar del cuadro de diálogo " Compartir " para obtener SIEMPRE una confirmación de compartir. (Esto se aplica al SDK de Javascript para Facebook).
Aquí está mi comprensión de las diferencias entre los dos:
FB.ui({ method: 'share', href: 'http://stackoverflow.com/questions/5363517', }, function(response){ console.log(response) });Si el usuario ha INICIADO SESIÓN y autorizado su aplicación:
response : {post_id: "10205041067000110_10205045578512895"} .response será nula.Si el usuario NO HA INICIADO SESIÓN en su aplicación (todavía debe iniciar sesión en Facebook):
response será nula independientemente de si el usuario compartió o no compartió.Por lo tanto, si necesita absolutamente la confirmación de compartir, primero debe pedirle al usuario que inicie sesión. Puede que esto no sea un problema para su aplicación, pero en mi caso esto agregó una fricción innecesaria al proceso de compartir.
(Obsoleto pero aún activo)
FB.ui({ method: 'feed', link: 'http://stackoverflow.com/questions/5363517', caption: 'Test Caption', }, function(response){ console.log(response) });INDEPENDIENTEMENTE del estado de inicio de sesión (escriba su aplicación; aún deben iniciar sesión en Facebook):
response devuelta por Facebook tendrá la identificación de la publicación: {post_id: "10205041067000110_10205045578512895"} .response será nula.Con este método, siempre podrá saber si alguien publicó o no, independientemente de su estado de inicio de sesión.
Esto es lo que hago... Crear el recurso compartido usando un ancla normal que llama a esta función de javascript (espaciado o corchetes o algo podría estar desactivado):
FB.ui( { display:'iframe', method: 'stream.publish', caption: 'Put something here', description: 'put something here', name: 'foo', link: 'http://www.foo.com', picture: 'http://fo.com/img.gif' }, function (response) { if (response && response.post_id) { //this means the post was completed....response.post_id is the FB post ID $.ajax({ var URL = '/pages/ajax_InsertUserFacebookPost.aspx?'; URL += 'facebookpostid=' + response.post_id; type: "GET", url: URL, data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", async: true }); } else { //alert('Post was not published.'); } } );