使用facebook开发者API访问用户的好友信息


Using Facebooks Developers API to access user's friend information

我目前正在制作一个网站,允许用户通过Facebook登录,并从中获得他们所有的信息,以在我的网站上使用。

e。如果他们是单身,或者他们对女人、男人或两者都感兴趣。

我一直在寻找周围的Facebook开发人员那边的网站,有一些样本代码在那里获得关于他们喜欢什么电影的信息,所以我只是想知道是否有可能改变和适应这是什么我需要的。

以下是我从本页找到的一些代码,并给出了解释:

http://developers.facebook.com/blog/post/481

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js#
appId=YOUR_APP_ID&amp;xfbml=1"></script>
<fb:login-button show-faces="true" width="200" max-rows="1" 
perms="user_likes, friends_likes"></fb:login-button>
FB.api('/me/friends', function(response) { });
FB.api(‘/USER_ID/movies’, function(response) { });

FB.api('/'+movieListSorted[i].id, function(response) {
  var newDiv = document.createElement("DIV");
  newDiv.innerHTML = "<img src='"+response.picture+"'></img><br/>";
  if( response.link) {
    newDiv.innerHTML+="<a href='"+response.link+"'>"+response.link
    +"</a><br/>";
    newDiv.innerHTML+='<iframe src="http://www.facebook.com'
    + '/plugins/like.php?'
    + 'href='+response.link+'&amp;layout=standard&amp;'
    + 'show_faces=true&amp;'
    + 'width=450&amp;action=like&amp;colorscheme=light'
    + '&amp;height=80"' 
    + 'scrolling="no" frameborder="0" style="border:none;'
    + 'overflow:hidden;' 
    + 'width:450px; height:80px;" allowTransparency="true">
    + '</iframe><br/>';
  }
  document.getElementById(response.id).appendChild(newDiv);
});

<html> 
<head> 
<title>Test Page</title> 
<script> 
  var movieList = new Array();
  var movieListSorted = new Array();
  var friendCount = 0;
  function showMovies() {
    alert(movieList.length);
  }
  function compareMovies(movieA, movieB) {
    if (movieA.name === movieB.name) return 0;
    if (movieA.name > movieB.name) return 1;
    return -1;
  }
  function popularMovies(movieA, movieB) {
    return movieB.mCount - movieA.mCount;
  }
  function data_fetch_postproc() {
    document.getElementById('test').innerHTML 
      = "Generating recommendations ... ";
    movieList.sort(compareMovies);
    // Now we have sorted list, dedupe and count
    mCtr = 0;
    for (i = 0; i < movieList.length; i++)
    {
      var count = 0;
      movieListSorted[mCtr] = movieList[i];
      for ( j = i; j < movieList.length; j++)
      {
        if ( movieList[i].name === movieList[j].name ) {
          count++;
        } else {
          break;
        }
      }
      i = i+count-1;
      movieListSorted[mCtr++].mCount = count;
    }
    var maxResults = 100;
    if( movieListSorted.length < 100) {
      maxResults = movieListSorted.length;
    } 
    movieListSorted.sort(popularMovies);
    document.getElementById('test').innerHTML = "";
    for( i=0; i<maxResults; i++) {
      var newDiv = document.createElement("DIV");
      newDiv.id = movieListSorted[i].id;
      newDiv.innerHTML = movieListSorted[i].name + ' : Likes - ' 
        + movieListSorted[i].mCount;
      document.getElementById("movies").appendChild(newDiv);
      FB.api('/'+movieListSorted[i].id, function(response) {
        var newDiv = document.createElement("DIV");
        newDiv.innerHTML = "<img src='"+response.picture+"'>"
          + "</img><br/>";
        if( response.link) {
          newDiv.innerHTML+= "<a href='"+response.link+"'>"
            +response.link+"</a><br/>";
          newDiv.innerHTML+= '<iframe src='
            + '"http://www.facebook.com/plugins/like.php?'
            + 'href='+response.link+'&amp;layout=standard'
            + '&amp;show_faces=true&amp;'
            + 'width=450&amp;action=like&amp;'
            + 'colorscheme=light&amp;height=80"' 
            + 'scrolling="no" frameborder="0" style="'
            + 'border:none; overflow:hidden;' 
            + 'width:450px; height:80px;"'
            + 'allowTransparency="true"></iframe><br/>';
        }
        document.getElementById(response.id).appendChild(newDiv);
      });
    }
  }
  function get_friend_likes() {
    document.getElementById('test').innerHTML = "Requesting "
      + "data from Facebook ... ";
    FB.api('/me/friends', function(response) {
        friendCount = response.data.length;
        for( i=0; i<response.data.length; i++) {
          friendId = response.data[i].id;
          FB.api('/'+friendId+'/movies', function(response) {
            movieList = movieList.concat(response.data);
            friendCount--;
            document.getElementById('test').innerHTML = friendCount 
              + " friends to go ... ";
            if(friendCount === 0) { data_fetch_postproc(); };
          });
        } 
      });
  }
</script> 
</head> 
<body> 
<div id="fb-root"></div> 
<div id="login"></div> 
<div id="test"></div> 
<div id="movies"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
FB.init({
    appId  : 'YOUR_APP_ID',
    status : true, // check login status
    cookie : true, // enable cookies 
    xfbml  : true  // parse XFBML
  });
FB.Event.subscribe('auth.sessionChange', function(response) {
  window.location.reload();
});
FB.getLoginStatus(function(response) {
  if (response.session) {
    // logged in and connected user, someone you know
    get_friend_likes();
    document.getElementById('login').innerHTML
      ='<a href="#" onclick="FB.logout();">Logout</a><br/>';
  } else {
    document.getElementById('login').innerHTML
      ='<fb:login-button show-faces="true" width="200"' 
      + ' max-rows="1" perms="user_likes, friends_likes">'
      + '</fb:login-button>';
    FB.XFBML.parse();
  }
});
</script> 
</body> 
</html>

你检查过图形API了吗:

Facebook Graph API

你还必须确保你有适当的权限:

Facebook API权限

我建议使用PHP SDK来获取这些信息,特别是如果您是初学者的话。你可以使用他们的函数。

你可以在下面的URL找到它的源代码(包括一些文档):https://developers.facebook.com/docs/reference/php/

首先,为了从Graph API获得任何东西,您需要为您的应用程序获得用户的身份验证,这在这里有记录:

https://developers.facebook.com/docs/authentication/

然后,您可以使用API调用获得有关当前用户所需的信息。在这里记录:

http://developers.facebook.com/docs/reference/php/facebook-api/

需要注意的代码如下,我编辑了这段代码,以提供当前登录用户的' interestd_in '字段,记录在这里:

 try {
        $user_profile = $facebook->api('/me?fields=interested_in','GET');
        echo "Interested in: " . $user_profile['interested_in'];
      } catch(FacebookApiException $e) {
        // Failed API call
        error_log($e->getType());
        error_log($e->getMessage());
      }