Facebook App用户列表

cap*_*lam 8 facebook facebook-fql facebook-graph-api

我是Facebook API的新手.我想得到一些我的朋友列表,他们也安装了我的应用程序.(你的想法是你可以和他们一起开始游戏).

这给出了我的朋友列表:

FB.api('/me/friends', ...
Run Code Online (Sandbox Code Playgroud)

这给了我的应用信息:

FB.api('/myappid', ...
Run Code Online (Sandbox Code Playgroud)

我想要的是"我的朋友也安装了这个应用程序"

我以为可能是这样的:

FB.api('/myappid/accounts', ...
Run Code Online (Sandbox Code Playgroud)

我希望这至少会给我的开发人员,管理员或测试人员,但没有这样的运气. 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
)
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激.

注意,我看过这篇文章: FaceBook应用程序:检索我的应用程序用户的ID列表

我保留了属于我网站的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();
Run Code Online (Sandbox Code Playgroud)

Ale*_*dam 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,因此语法可能不完全正确)

用户和好友查询的文档位于:

http://developers.facebook.com/docs/reference/fql/user/

http://developers.facebook.com/docs/reference/fql/friend/