我一直在努力尝试从facebook API拉朋友生日,我已经能够拉我的朋友uid了但是当我用其他任何东西(即姓名,性别,生日等)替换uid请求时打破代码。任何见解都将是一个重要的帮助。感谢
<div id="fb_login">
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'APP_ID',
status : true,
cookie : true,
xfbml : true,
oauth : true,
});
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
<div class="fb-login-button" scope="user_birthday,friends_birthday">Login with Facebook</div>
<div id="bday_display">
<?php
$app_id = 'APP_ID';
$app_secret = 'APP_SECERT';
$my_url = 'MY_URL';
$code = $_REQUEST["code"];
//auth user
if(empty($code)) {
$dialog_url = 'https://www.facebook.com/dialog/oauth?client_id='
. $app_id . '&redirect_uri=' . urlencode($my_url) ;
echo("<script>top.location.href='" . $dialog_url . "'</script>");
}
//get user access_token
$token_url = 'https://graph.facebook.com/oauth/access_token?client_id='
. $app_id . '&redirect_uri=' . urlencode($my_url)
. '&client_secret=' . $app_secret
. '&code=' . $code;
$access_token = file_get_contents($token_url);
// Run fql query
$fql_query_url = 'https://graph.facebook.com/'
. '/fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()'
. '&' . $access_token;
$fql_query_result = file_get_contents($fql_query_url);
$fql_query_obj = json_decode($fql_query_result, true);
//display results of fql query
echo '<pre>';
print_r("query results:");
print_r($fql_query_obj);
echo '</pre>';
?>
</div>
答案 0 :(得分:0)
试试这个fql语句。请记住,不是每个人都会填充他们的生日场,或者如果他们有,让你可以看到它。
SELECT name, birthday_date FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me() )
您可以在上述FQL的末尾添加AND strlen(birthday_date) > 0
,以过滤掉没有明显生日的朋友。
答案 1 :(得分:0)
这是有效的代码。感谢您的帮助cpilko。在你的帮助下我无法完成它。
try{
$fql = "SELECT name, birthday_date FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me())";
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$fqlResult = $facebook->api($param);
}
catch(Exception $o){
d($o);
}
}