我想允许我的应用中的用户按名称搜索他们不朋友的人。
我知道我可以使用此查询对用户进行公开搜索:
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关联且名称中包含“标记”的用户进行公开搜索?
或者是否有人可以通过与特定用户相关的内容过滤公共搜索?
答案 0 :(得分: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))))