Список пользователей приложения Facebook - PullRequest
8 голосов
/ 11 апреля 2011

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

Я веду локальный список идентификаторов пользователей 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 ]

9 голосов
/ 11 апреля 2011

Я считаю, что запрос 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/

1 голос
/ 20 марта 2013

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