Извлечение дней рождения друзей из профиля Facebook - PullRequest
3 голосов
/ 07 августа 2009

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

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

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

Ответы [ 4 ]

4 голосов
/ 12 января 2010

Так недавно я хотел проверить своих друзей, чтобы узнать, есть ли у кого-нибудь из них день рождения на текущий день. Используя 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 />";
 }
4 голосов
/ 05 октября 2009

Прочитайте документацию 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
}
3 голосов
/ 15 августа 2009

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.

1 голос
/ 07 августа 2009

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

...