2013-02-26 4 views
1

Я читал на сайте developers.facebook.com, но они очень плохо объясняют это. Поэтому я надеюсь, что некоторые из вас могут объяснить мне, как добавить комментарий и кнопку на статусы Facebook с использованием JavaScript и API-интерфейсов Graph.Комментарии и отзывы на обновлениях facebook

У меня есть приложение, которое отображает входной фид пользователя (если вам нужна новостная лента). То, что я хочу, - это базовая функция 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, которые одинаково напоминают кнопку комментария и, по крайней мере, один, чтобы отображать самые последние комментарии при нажатии (как и на Facebook). И мне нужно будет добавить какой-то JS-код, который отправляет запрос в facebook с идентификатором состояния/образа, идентификатором пользователя, каким типом действий (например, или комментарием) и последним, что содержание комментарий в этом случае.

Причина, по которой я запрашиваю эту информацию, заключается в том, что я работаю над проектом, и я просто пытаюсь использовать различные функции API-интерфейса Facebook, поскольку они могут хорошо дополнять функции моего проекта и это полезно знать для будущих ссылок.

Надежда некоторые из вас знают, что я могу сделать, чтобы заставить его работать

С уважением, Александр .

ответ

1

Лично я считаю, что Документы отлично справляются.

От 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 

Комментирование проста, как только у вас есть идентификатор поста вы хотите прокомментировать, просто запустить

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!'); 
    } 
}); 

Точно так же, симпатия еще проще. Из тех же документы:

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

+0

Я не могу помочь вам в этой детали, мне нужен весь проект. Поместите этот код, где вы хотите понравиться/комментарий. –

+1

Хорошо, так что у меня было время попробовать это сейчас. Сначала это работало, но я столкнулся с большой проблемой. Итак, я сделал проверку if/else, чтобы узнать, есть ли объект, связанный с этим сообщением. В этом случае подобная функция принимает переменную object_id. Но если есть стандартный пост (без каких-либо объектов), он принимает переменную Post_id, которая извлекается из 'response.data [i] .id'.Это, однако, дает мне сообщение об ошибке в консоли (когда я нажимаю подобную кнопку): «SyntaxError: по крайней мере одна цифра должна произойти после десятичной точки». Идентификатор сообщения выглядит так: xxxxxxx_xxxxxx – Aleksander

 Смежные вопросы

  • Нет связанных вопросов^_^