Список Пользователей Приложения Facebook

Я довольно новичок в API Facebook. Я хочу получить список моих друзей, которые тоже установили приложение. (Идея в том, что вы можете начать игру с ними).

это дает список моих друзей:

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: получить список идентификаторов моего приложения пользователи

я сохраняю локальный список идентификаторов пользователей Facebook, которые принадлежат моему сайту, и я действительно могу достичь своей цели, выполнив следующее, Но я уверен, что должен быть лучший способ:

$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();

2 ответов


Это я считаю, что запрос 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 . "');"));

(Я использую API java и JS, поэтому синтаксис может быть не совсем правильным)

документация для запросов пользователя и друга здесь:

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

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


используйте этот запрос в 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