2009-08-07 133 views
3

我想从他们的Facebook个人资料(提供他们的Facebook资格证)中提取用户及其朋友在我网站上的“生日”。从Facebook个人资料中提取朋友的生日

它们是Facebook API/Connect中的一项功能,我可以使用Facebook API尽可能在Facebook上获取这些详细信息。

我想将这些数据存储在我的数据库中,并且在完成之前,将要求用户提供他们的Facebook凭据和同意书。

+2

只给他们所有的生日卡在1/1。没有人会介意.... – 2009-08-07 10:06:50

+0

米奇..我真的没有得到你。 – 2009-08-07 10:11:24

回答

1

您可以通过API获取它,但Facebook的条款严格禁止您在数据库中存储除用户标识以外的任何内容 - 有关详细信息,请参阅the developer wiki。您将需要每次查询API。

+0

好的......谢谢! – 2009-08-07 10:56:20

3
 

require_once('facebook-platform/client/facebook.php'); 

$facebook = new Facebook(API_KEY, SECRET); 
$facebook->require_login(); 

function getInfo($user_list, $fields) 
{ 
    try 
    { 
     $u = $facebook->api_client->users_getInfo($user_list, $fields); 
     return $u; 
    } 
    catch (FacebookRestClientException $e) 
    { 
     echo $e->getCode() . ' ' . $e->getMessage(); 
    } 
} 

function getFriendsBirthdays($user_id) 
{ 
    $f = $_REQUEST['fb_sig_friends']; 
    $f = explode(',', $f); 
    $birthdays = array(); 
    foreach($f as $friend_id) 
    { 
     $birthdays[] = getInfo($friend_id, 'birthday'); 
    } 
    return $birthdays; 
} 
 

做那样的事情或使用批处理API来一次执行多个调用。检查Facebook API。

4

阅读API文档很容易做到这一点。你可以这样做:

$facebook = new Facebook($apikey, $secret); 
$uid = $facebook->require_login(); 

$friends = $facebook->api_client->friends_get(); // $friends is an array holding the user ids of your friends 

foreach($friends as $f) { 
    $data = $facebook->api_client->fql_query("SELECT birthday_date FROM user WHERE uid=$f"); 
    // $data[0] is an array with 'birthday_date' => "02/29/1904" 
    // see api documentation for other fields and do a print_r 
} 
4

所以最近我想检查我的朋友,看看他们是否有他们的生日当天。使用FQL这非常容易,我鼓励你更多地探索FQL,因为它会产生比Pierre所提供的更有效的解决方案。这里是一小段代码:

$friends = $facebook->api_client->friends_get(); 
$uids = ""; 

foreach($friends as $f) { 
    $uids .= "uid=$f OR "; 
} 

$query_uids = substr($uids,0,strlen($query_uids)-4); 

date_default_timezone_set('UTC'); 
$current_date = date("m/d"); 
echo "<br />Searching for birthdays for the given month/day: $current_date<br />"; 

$data = $facebook->api_client->fql_query("SELECT name, uid FROM user WHERE (($query_uids) AND strpos(birthday_date,'$current_date') >= 0)"); 

if(count($data) > 0) { 
    foreach($data as $d) { 
    print_r($d); 
    } 
} else { 
echo "<br />No Birthdays Today<br />"; 
} 
+0

嘿迈克!谢谢,这对我来说工作得很好! :) +1 – 2010-12-22 22:20:00

相关问题