我对Facebook API相当新。我想得到一个我的朋友列表,他们也安装了我的应用程序。 (你可以随便与他们一起开始游戏)。
这给出了我的朋友列表:
FB.api('/me/friends', ...
这提供了我的应用信息:
FB.api('/myappid', ...
我想要的是“我的朋友也安装了这个应用程序”
我认为可能是这样的:
FB.api('/myappid/accounts', ...
我希望这至少会给我的开发人员,管理员或测试人员,但没有这样的运气。 http://developers.facebook.com/docs/test_users/ http://developers.facebook.com/docs/ApplicationSecurity/
我的感觉可能是我必须使用FQL来委托一个类似
的查询(psuedocode)
SELECT
FROM my_friends
WHERE uid IN (
SELECT uid
FROM app_users
WHERE appid = myappid
)
非常感谢任何建议。
注意,我看过这篇文章: FaceBook app: retrieve list of ids of my application's users
我保留了属于我网站的Facebook用户ID的本地列表,我实际上可以通过执行以下操作来实现我的目标,但我确信必须有更好的方法:
$facebookFriendIds = array();
$friends = $this->facebook->api('/me/friends');
foreach ($friends['data'] as $friend) {
$facebookFriendIds[] = $friend['id'];
}
$this->friends = Doctrine_Core::getTable('User')->createQuery()
->whereIn('fb_user_id', $facebookFriendIds)
->execute();
答案 0 :(得分:9)
这是我相信FQL查询
$facebook->api(array('method' => 'fql.query', 'query' => "SELECT uid FROM user WHERE is_app_user = '1' AND uid IN (SELECT uid2 FROM friend WHERE uid1 = '" . $user_id . "');"));
(我使用java和JS API,因此语法可能不完全正确)
用户和朋友查询的文档在这里:
答案 1 :(得分:1)
在JS中使用此查询
function getAppFriends()
{
var fql = "SELECT uid, name, pic_square, is_app_user
FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
OR uid IN(SELECT uid1 FROM friend WHERE uid2=me())
ORDER BY name";
var query = FB.Data.query(fql);
query.wait(function(responseFromFb){
if(responseFromFb!=null){
// Read the responseFromFb and check for
// is_app_user = true and list them out the way
// you want to.
}
});// anonymus function closes here
} //function ends here