I'm currently working on a website that allows a user to login though Facebook and from that get all of their information to be used on my site.
e.g If they are single or are they interested in women men or both.
I have been looking around on the Facebook Developers side of there site and there is some sample code on there for getting information about what films they like, so I was just wondering if it is possible to change and adapt this to what I need.
Here's some of the code I have found from this page and where it explains it:
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&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+'&layout=standard&'
+ 'show_faces=true&'
+ 'width=450&action=like&colorscheme=light'
+ '&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+'&layout=standard'
+ '&show_faces=true&'
+ 'width=450&action=like&'
+ 'colorscheme=light&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开发者_JAVA百科_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>
Have you checked out the Graph API:
Facebook Graph API
You also have to make sure you have the proper permissions:
Facebook API Permissions
I'd recommend using the PHP SDK to get this information, especially if you're a beginner. You can use their functions then.
You can find the source code for this (and some documentation included) at the following URL: https://developers.facebook.com/docs/reference/php/
First of all, in order to get anything from the Graph API, you will need to gain the authentication of the user for your application, this is documented here:
https://developers.facebook.com/docs/authentication/
Then, you can get the information that you need about the current user, using an API call. This is documented here:
http://developers.facebook.com/docs/reference/php/facebook-api/
The code of note here is below, I have edited this to provide the currently logged in user's 'interested_in' field as documented here:
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());
}
精彩评论