我想从他们的Facebook个人资料(提供他们的facebook凭证)中获取用户及其朋友在我网站上的“生日”。
他们是Facebook API / Connect中的一个功能,我可以使用Facebook API在Native Facebook Apps上尽可能从Facebook获取这些详细信息。
我想将这些数据存储在我的数据库中,在完成此操作之前,系统会要求用户提供他们的Facebook凭据和同意。
答案 0 :(得分: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
}
答案 1 :(得分: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 />";
}
答案 2 :(得分: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。
答案 3 :(得分:1)
您可以通过API获取它,但Facebook的条款严格禁止您在数据库中存储除用户ID以外的任何内容 - 有关详细信息,请参阅the developer wiki。您每次都需要查询API。