2013-02-26 165 views
1

我一直在阅读的developers.facebook.com网站,但他们解释这些事情非常糟糕。所以我希望你们中的一些人能够向我解释如何使用JavaScript和Graph API在Facebook上添加评论和喜欢按钮。评论和喜欢facebook的更新

我现在所拥有的是一个显示登录用户的home-feed(如果你想要的新闻源)的应用程序。我想要的是Facebook的基本功能,即能够评论和喜欢这些状态,图像,共享等(就像你可以在Facebook上一样),还可以看到其他评论和喜欢这些照片和状态的人。

我了解,你需要使用POST方法,但我不知道我会做到这一点(有一些信息在这里:http://developers.facebook.com/docs/reference/api/publishing/

因此,这里是我的代码现在(我不知道这是否是做的最有效的方式,但它的作品,我会很高兴,如果你能给我一些建设性的批评上也):

FB.api('/me/home', function(response) { 
    console.log(response.data); 
    for(var i=0, len = response.data.length; i < len; i++){ 

    var post_type = response.data[i].status_type; //Post type 

    var poster_id = response.data[i].from.id; //Poster 
    var poster_name = response.data[i].from.name; //Posters name 
    var poster = '<a href="http://www.facebook.com/' + poster_id + '/" >' + poster_name + '</a>'; //Link to poster 
    var poster_pic = 'https://graph.facebook.com/' + poster_id + '/picture'; //Posters profile pic 
    var poster_img = '<img height="50px" width="50px" src="' + poster_pic + '" />'; 

    var post_id = response.data[i].id; //Id of message 
    var post = response.data[i].message; //Content of message 
    var post_date = response.data[i].created_time; //Date created 

    var object_id = response.data[i].object_id; //Pic id (if pic's an object) 
    var post_img_url = response.data[i].picture; //Pic url 

    if(!object_id) { 
     var post_img = '<a href="http://www.facebook.com/' + post_id + '/"> <img src="' + post_img_url + '" /> </a>'; // <a href="http://www.facebook.com/' + post_id + '/">See at Facebook</a> 
    } else { 
     var post_img = '<a href="http://www.facebook.com/' + object_id + '/"> <img src="' + post_img_url + '" /> </a>'; 
    } 

    if (!post_img_url) { 
     post_img = ''; 
    } 

    if(!post) { 
     post = response.data[i].story; 
    } 

    if (post_type === 'wall_post') { 
     if(response.data[i].to) { 
     var posted_to_name = response.data[i].to.data[0].name; 
     var posted_to_id = response.data[i].to.data[0].id; 
     var posted_to = '<a href="http://www.facebook.com/' + posted_to_id + '/" >' + posted_to_name + '</a>'; 

     document.getElementById("write").innerHTML += ('<hr> <div class="facebook_content"> <div class="facebook_left_side"> <div class="facebook_content_header"> <div class="poster_img">' + poster_img + '</div> <div class="poster">' + poster + '</div> <div class="post_type"> wrote on ' + posted_to + '\'s wall: </div> <div class="post_date">' + post_date + '</div> </div> <div class="story">' + post + '</div> </div> <div class="facebook_right_side"> <div class="img">' + post_img + '</div> </div> </div> </br>'); 
     } else { 
     document.getElementById("write").innerHTML += ('<hr> <div class="facebook_content"> <div class="facebook_left_side"> <div class="facebook_content_header"> <div class="poster_img">' + poster_img + '</div> <div class="poster">' + poster + '</div> <div class="post_date">' + post_date + '</div> </div> <div class="story">' + post + '</div> </div> <div class="facebook_right_side"> <div class="img">' + post_img + '</div> </div> </div> </br>'); 
     } 
    } else if (post_type === 'added_photos') { 
     document.getElementById("write").innerHTML += ('<hr> <div class="facebook_content"> <div class="facebook_left_side"> <div class="facebook_content_header"> <div class="poster_img">' + poster_img + '</div> <div class="poster">' + poster + '</div> <div class="post_type"> added a photo: </div> <div class="post_date">' + post_date + '</div> </div> <div class="story">' + post + '</div> </div> <div class="facebook_right_side"> <div class="img">' + post_img + '</div> </div> </div> </br>'); 

} else if (post_type === 'shared_story') { 
     document.getElementById("write").innerHTML += ('<hr> <div class="facebook_content"> <div class="facebook_left_side"> <div class="facebook_content_header"> <div class="poster_img">' + poster_img + '</div> <div class="poster">' + poster + '</div> <div class="post_type"> shared: </div> <div class="post_date">' + post_date + '</div> </div> <div class="story">' + post + '</div> </div> <div class="facebook_right_side"> <div class="img">' + post_img + '</div> </div> </div> </br>'); 

} else { 
     document.getElementById("write").innerHTML += ('<hr> <div class="facebook_content"> <div class="facebook_left_side"> <div class="facebook_content_header"> <div class="poster_img">' + poster_img + '</div> <div class="poster">' + poster + '</div> <div class="post_date">' + post_date + '</div> </div> <div class="story">' + post + '</div> </div> <div class="facebook_right_side"> <div class="img">' + post_img + '</div> </div> </div> </br>'); 
} 
    } 
}); 

我显然需要添加三个(或更多)divs,其中包含like和comment按钮,并且至少有一个用于显示点击时的最新评论(就像在Facebook上一样)。我需要添加一些JS代码,向Facebook发送请求,其中包括状态/图像的ID,用户的ID,执行的操作类型(如评论或评论)以及最后的内容在这种情况下评论。

我请求这些信息的原因是我正在开发一个项目,我只是尝试了Facebook Graph API的不同功能,因为它们可以很好地补充我的项目功能,并且很高兴知道未来的参考。

希望你们当中有些人知道我能做些什么,使工作

真诚, 亚历山大。

回答

1

就我个人而言,我认为Docs做得很好。

docs

Create 

You can write to the POST_ID/comments connection to post a comment to the post by issuing an HTTP POST request with the publish_stream permission and following parameters. 

Parameter Description  Type Required 
message Comment text string yes 

评论很简单,一旦你有你想要发表评论的帖子的ID,只需运行

var comment = 'Reading JS SDK documentation'; 
var POST_ID = '1231412351234'; 
FB.api('/'+POST_ID+'/comments', 'post', { message: comment }, function(response) { 
    if (!response || response.error) { 
    alert('Error occured'); 
    } else { 
    alert('Great! It worked!'); 
    } 
}); 

同样,喜好甚至simplier。从同一个文档:

You can like a Post by issuing a HTTP POST request to the POST_ID/likes connection with the publish_stream permission. You can suppress the notification created when liking a Post by passing a notify parameter with value of false. 

所以,在Javascript:

var POST_ID = '1231412351234'; 
FB.api('/'+POST_ID+'/likes', 'post', function(response) { 
    if (!response || response.error) { 
    alert('Error occured'); 
    } else { 
    alert('Great! It worked!'); 
    } 
}); 
+0

感谢的人!一旦我到达我的电脑,我会尝试这个,并会通知你,如果它的工作或没有:) 只是一个问题。我将如何在我现有的代码中实现这一点?我会在哪里放你的代码等? – Aleksander 2013-02-26 18:16:35

+0

我无法帮你了解详情,我需要整个项目。把该代码放在你想要的/评论的地方。 – 2013-02-26 18:54:35

+1

好的,所以我现在有空试试了。起初它似乎工作,但我遇到了一个大问题。所以,我做了一个if/else检查,看看是否有与帖子相关的对象。在这种情况下,like函数接受变量object_id。但是如果有一个标准的帖子(没有任何对象),它需要从'response.data [i] .id'中检索到的变量Post_id。然而,这给了我一个控制台中的错误消息(当我按下类似按钮时):“SyntaxError:至少一位数字必须出现在小数点后”。帖子的ID如下所示:xxxxxxx_xxxxxx – Aleksander 2013-03-02 20:00:52