首页 > 解决方案 > 如何在 javascript 中从 Facebook SDK 获取 user_likes?

问题描述

我试图从 Facebook 获得用户的喜欢,我一直在寻找一个例子,但我没有找到。使用我拥有的代码,我可以获取用户的个人资料信息,例如姓名、邮件、性别……这是我的代码:

     <script>
  window.fbAsyncInit = function() {
        FB.init({
            appId      : 'appid',
            xfbml      : true,
            version    : 'v4.0'
        });
        FB.getLoginStatus(function(response){
            if(response.status === 'connected'){
                document.getElementById('status').innerHTML = 'we are connected';
            } else if(response.status === 'not_authorized') {
                 document.getElementById('status').innerHTML = 'we are not logged in.'
            } else {
                document.getElementById('status').innerHTML = 'you are not logged in to Facebook';
            }
        });
    // FB.AppEvents.logPageView();
    };

    (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'));

    function login(){
        FB.login(function(response)
  {
            if(response.status === 'connected')
   {
                document.getElementById('status').innerHTML = 'we are connected';
    FB.api
    (
     '/me', 'GET', {fields: 'name,id,email,favorite_teams,picture,address,locale,location,meeting_for,gender'}, 
     function(response) 
     {
      document.getElementById('status').innerHTML = response.email+'<br>'+response.favorite_teams+'<br><img src="'+response.picture+'" /><br>'+response.name+'<br>'+response.address+'<br>'+response.locale+'<br>'+response.location+'<br>'+response.meeting_for+'<br>'+response.gender;

     }
    );

/* make the API call */
FB.api(
    "/me/likes",
    function (response) {
      if (response && !response.error) {
        alert(response);

      }
    }
);
alert('after likes');
    } 


   else if(response.status === 'not_authorized') {
                 document.getElementById('status').innerHTML = 'we are not logged in.'
            } else {
                document.getElementById('status').innerHTML = 'you are not logged in to Facebook';
            }

        }, {scope: 'email,groups_access_member_info,publish_to_groups,user_age_range,user_birthday,user_events,user_friends,user_gender,user_hometown,user_likes,user_link,user_location,user_photos,user_posts,user_tagged_places,user_videos'});
    }


    function logout(){
        FB.logout(function(response) {
            document.location.reload();
        });
    }



</script>
<div id="status">
</div>
<!-- <button onclick="getInfo()">Get Info</button> -->
<button onclick="login()">login</button>
<button onclick="logout()">logout</button>

但我不知道如何从 JSON 响应中提取用户喜欢的内容,JSON 响应如下所示:

{
 "data": [],
 "paging": {},
 "summary": {}
}

标签: javascriptfacebooksdk

解决方案


我用这段代码找到了答案:

/* make the API call */
FB.api(
    "/me/likes",
    function (response) {
      if (response && !response.error) {
        console.log(response);
var text='';
for (i = 0; i < response.data.length; i++) {
  text +=response.data[i].created_time+'<br>'+response.data[i].name;
}
document.getElementById('status').innerHTML =text;


      }
    }
);

推荐阅读