3

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

他们是 Facebook API/Connect 中的一个功能,我可以使用它在使用 Facebook API 的本机 Facebook 应用程序上尽可能从 facebook 获取这些详细信息。

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

4

4 回答 4

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 />";
 }
于 2010-01-12T02:43:24.023 回答
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
}
于 2009-10-05T00:34:26.943 回答
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 一次执行多个调用。检查 Facebook API。

于 2009-08-15T03:40:38.600 回答
1

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

于 2009-08-07T10:39:41.073 回答