1

アプリ内のユーザーが、友達ではない人を名前で検索できるようにしたいと考えています。

次のクエリを使用して、ユーザーの公開検索を実行できることを理解しています:

search?q=mark&type=user

これにより、その名前を持つすべてmarkのユーザーが得られ、ユーザーとはあまり関係がありません。

これを使用して、友達であるユーザーを名前で検索します。

fql?q=
    SELECT uid, name, pic_square 
    FROM user 
    WHERE strpos(lower(name),lower('mark')) >=0 AND 
        uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

私は、ユーザーが次のようなものを使用して友達の友達を検索できるようにすることに満足しています。

fql?q=
    SELECT uid, name, pic_square 
    FROM user 
    WHERE strpos(lower(name),lower('mark')) >=0 AND 
        uid IN (SELECT uid2 
                FROM friend 
                WHERE uid1 IN (SELECT uid2 
                               FROM friend 
                               WHERE uid1 = me()))

残念ながら、次のエラーが返されます。

{
"message": "(#604) Can't lookup all friends of #####. 
    Can only lookup for the logged in user or the logged in user's friends that 
    are users of your app.", 
"type": "OAuthException", 
"code": 604
}

私はこのエラーを理解しています。パブリック検索を使用する必要があるようです。

名前に「マーク」が含まれる、大学 XXX に所属するすべてのユーザーを公開検索するにはどうすればよいですか?

または、特定のユーザーに関連するもので公開検索をフィルタリングする代替手段はありますか?

4

1 に答える 1

0

これはちょっとうまくいくようです...(一部の友達や友達だけを表示しているようですが、どのようにフィルタリングされているのかわかりません)

fql?q=
    SELECT uid, name 
    FROM user 
    WHERE strpos(lower(name),lower('mark')) >=0 AND 
        (uid IN (SELECT uid2 
                FROM friend 
                WHERE uid1 = me()) OR 
        (uid IN (SELECT uid2 
                FROM friend 
                WHERE uid1 IN (SELECT uid 
                                FROM user 
                                WHERE uid IN (SELECT uid2 
                                                FROM friend 
                                                WHERE uid1 = me()) AND 
                                                    is_app_user=1))))
于 2012-05-07T01:17:23.683 に答える