2009-08-07 2 views
3

Я хочу получить «дни рождения» пользователей и их друзей на своем веб-сайте из своих профилей facebook (с предоставленными им учетными данными на facebook).Получение дней рождения друзей из профиля facebook

Является ли это их функцией в API Facebook/Connect, которую я могу использовать, чтобы получить эти данные из Facebook, насколько это возможно, в Native Facebook Apps, используя API Facebook.

Я хочу сохранить эти данные в своей БД, и пользователям будет предложено подтвердить их учетные данные и согласие перед тем, как это будет сделано.

+2

просто отправьте им все поздравительную открытку на 1/1. Никто не будет возражать .... –

+0

Митч .. Я честно вас не понял. –

ответ

1

Вы можете получить его через API, но условия Facebook строго запрещают вам хранить что-либо, кроме своего идентификатора пользователя, в вашей базе данных - см. the developer wiki. Вам нужно будет каждый раз запрашивать API.

+0

ok ... Спасибо !!! –

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; 
} 
 

Сделайте что-нибудь подобное или используйте Batch API для выполнения нескольких вызовов одновременно. Проверьте API Facebook.

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 больше, потому что это даст более эффективное решение, чем, скажем, то, что предлагает Пьер. Вот небольшой фрагмент кода:

$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 –

Смежные вопросы