我想從他們的Facebook個人資料(提供他們的Facebook資格證)中提取用戶及其朋友在我網站上的「生日」。從Facebook個人資料中提取朋友的生日
它們是Facebook API/Connect中的一項功能,我可以使用Facebook API儘可能在Facebook上獲取這些詳細信息。
我想將這些數據存儲在我的數據庫中,並且在完成之前,將要求用戶提供他們的Facebook憑據和同意書。
我想從他們的Facebook個人資料(提供他們的Facebook資格證)中提取用戶及其朋友在我網站上的「生日」。從Facebook個人資料中提取朋友的生日
它們是Facebook API/Connect中的一項功能,我可以使用Facebook API儘可能在Facebook上獲取這些詳細信息。
我想將這些數據存儲在我的數據庫中,並且在完成之前,將要求用戶提供他們的Facebook憑據和同意書。
您可以通過API獲取它,但Facebook的條款嚴格禁止您在數據庫中存儲除用戶標識以外的任何內容 - 有關詳細信息,請參閱the developer wiki。您將需要每次查詢API。
好的......謝謝! – 2009-08-07 10:56:20
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。
閱讀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
}
所以最近我想檢查我的朋友,看看他們是否有他們的生日當天。使用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 />";
}
嘿邁克!謝謝,這對我來說工作得很好! :) +1 – 2010-12-22 22:20:00
只給他們所有的生日卡在1/1。沒有人會介意.... – 2009-08-07 10:06:50
米奇..我真的沒有得到你。 – 2009-08-07 10:11:24