Guardar comentarios con api de facebook

30 Ene

La funcionalidad de guardar comentarios de uno de mis portales se desactivo
debido a actualizaciones en la api de facebook.

Aunque la funcionalidad
de escribir los comentarios se mantuvo intacta, la de guardarlos en mi base de
datos se perdió.

El código que tenia era algo como lo
siguiente:

<script
src=”http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php&#8221;
type=”text/javascript”></script>
<div id=”divfb_connect”></div>

<script
type=”text/javascript”>
var fbcDiv =
document.getElementById(‘divfb_connect’);
var fbcUrl = ‘http://www.mysite.com&#8217; +
location.pathname;

var fbcPath = location.pathname;
var fbcTitle = document.title;
var fbcXid =
‘asdfqwer’;

fbcDiv.innerHTML = ‘<fb:comments numposts=”10″
candelete=”true” canpost=”true” url=”‘ + fbcUrl + ‘” title=”‘ + fbcTitle + ‘”
xid=”‘ + fbcXid + ‘” quiet=”true”></fb:comments>’;
FB.init(’21asdf231asd23f1′,
“xd_receiver.html”);

FB_RequireFeatures([“Comments”], function() {

FB.CommentClient.add_onComment(function(comment) {

var
url = ‘mypage.aspx?id=’ + 279763 + ‘&comments=’ + comment.post +
‘&user=’ + comment.user;
$.get(url, “”, function handle_comments(data, status)
{
//code
here
});
});

});

</script>

Investigando encontré que
habia que realizar un cambio para usar la nueva versión. En esta se debia
usar:

<div
id=”fb-root”></div>
<script>
window.fbAsyncInit = function() {
FB.init({appId: ‘your app id’,
status: true, cookie: true,
xfbml: true});
};
(function() {
var e =
document.createElement(‘script’); e.async = true;
e.src =
document.location.protocol +
‘//connect.facebook.net/en_US/all.js’;

document.getElementById(‘fb-root’).appendChild(e);
}());
</script>

Y
para poder controlar el evento de cuando se agrega un comentario se usa la
función:

FB.Event.subscribe(‘comments.add’,
function(response) {
alert(‘Comment Added’)
});

La cual debe
ir dentro de la función de window.fbAsyncInit despues de la función init, y
dentro del fb:comment hay que agregar la propiedad notify en true.

Pero
ahí fue donde iniciaron los problemas. El objeto response no posee propiedades
que permitan acceder ni al id del usuario ni al texto que escribio como
comentario. Pero he aqui una solución ingeniosa… la idea es obtener el
comentario que se acabo de escribir. El código queda:

<div id=”aclfb_connect”></div>
<script
type=”text/javascript”>
var fbcDiv =
document.getElementById(‘aclfb_connect’);
var fbcUrl = ‘http://www.mysite.com&#8217; +
location.pathname;

var fbcPath = location.pathname;
var fbcTitle = document.title;
var fbcXid =
‘asdfqwer’;

fbcDiv.innerHTML = ‘<fb:comments numposts=”10″
candelete=”true” canpost=”true” url=”‘ + fbcUrl + ‘” title=”‘ + fbcTitle + ‘”
xid=”‘ + fbcXid + ‘” quiet=”true” notify=”true”></fb:comments><div
id=”fb-root”></div>’;

window.fbAsyncInit = function
() {
FB.init({
appId: ’21asdf231asd23f1′, status: true, cookie: true,
xfbml: true
});

FB.Event.subscribe(‘comments.add’, function (resp) {
FB.api({
method:
‘comments.get’,
xid: fbcXid
},
function (response)
{
var fb_commentData = {
xid:
response[0].xid,
fromid: response[0].fromid,
time:
response[0].time,
text: response[0].text,
id:
response[0].id,
username: response[0].username,
reply_xid:
response[0].reply_xid,
post_id: response[0].post_id,
app_id:
response[0].app_id,
object_id: response[0].object_id
};
var url =
‘mypage.aspx?id=’+ response[0].xid
+’&comments=’ + response[0].text + ‘&user=’ +
response[0].fromid + ‘&id=’ + response[0].id + ‘&username=’ +

response[0].username + ‘&reply_xid=’ + response[0].reply_xid +
‘&post_id=’ + response[0].post_id;
$.get(url, “”, function handle_comments(data,
status) {
//code here
});

});

});
};
(function () {
var e =
document.createElement(‘script’); e.async = true;
e.src =
document.location.protocol +
‘//connect.facebook.net/en_US/all.js’;

document.getElementById(‘fb-root’).appendChild(e);
} ());

</script>

Y
por fin! logré guardar los comentarios que los usuarios escribian en mi portal.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Psyche's Circuitry

Thoughts on growing up and growing old in the digital age

digiphile

We're already living in the future. It's just not evenly distrbuted yet.

TED Blog

The TED Blog shares interesting news about TED, TED Talks video, the TED Prize and more.

Why? Because Science.

Combating Stupidity Since 2012

TechCrunch

Startup and Technology News

Skeptical Software Tools

Applying the power of the programmable web to the purposes of skepticism.

CNNEspañol.com

Ultimas Noticias de Estados Unidos, Latinoamérica y el Mundo, Opinión y Videos

Negocios, Mujer y Tecnología

Desde una perspectiva diferente

MSexcel

Un pequeño aporte para todos :)

Omar Barrera

whats are you doing?

Era 2.0

Mi rincón sobre marketing y nuevas tecnologías

Desarrollo e ingeniería

Desarrollo de soluciones en informática

A %d blogueros les gusta esto: