我试图在Facebook上提取所有用户朋友的当前位置,并且遇到一个奇怪的问题,其中一些朋友正在读取NULL,当我在他们的实际Facebook页面上看到它说“生活”在 , 。“这个错误的难点在于它只发生在大约30%的情况下。在其余的情况下,它会提取所有正确的信息,这告诉我权限可能已正确设置。
具体来说,我使用的FQL代码是:
SELECT uid,
name,
current_location
FROM USER
WHERE uid IN (SELECT uid2
FROM friend
WHERE uid1 = Me())
当直接向图表发出javascript请求时出现了同样的问题,因此它似乎也不是FQL问题。有谁知道为什么current_location可能有时失败并报告NULL,但并非总是如此?
谢谢。
答案 0 :(得分:2)
隐私设置的优先级高于facebook api。
如果用户限制了隐私设置中的特定信息,即使用户授予了权限,您也无法通过facebook api(graph,fql,rest api)获取该信息。
e.g。
如果我限制在隐私设置上分享我的生日,即使他们要求,也没有应用程序可以抓住我的生日。
此外,用户可以限制应用获取特定信息。
e.g。用户可以允许应用xyz
访问他们想要的所有内容,但同时用户可以限制应用xyz
访问其位置
我希望这能回答你的问题。
答案 1 :(得分:0)
有两种可能性; 拥有current_location的用户的朋友为null:
1)未在Facebook个人资料中指定他们当前的位置
2)他们在facebook个人资料中指定了当前位置,但是 他们的隐私设置拒绝你看到它
答案 2 :(得分:0)
我有同样的问题。
我检查了两个不同的用户,这些用户是我的朋友。
在两种情况下,FQL查询如:
select uid, first_name, name, birthday, birthday_date, current_address, current_location, hometown_location, sex from user where uid in (select uid2 from friend where uid1 = me()
为null
返回home_location
。
我检查过所有帐户和家庭位置都可以访问(隐私和应用隐私设置)。
我的访问令牌包含所有必需的权限(其他朋友显示了家庭位置)。
然后我用查询运行FQL控制台:
select uid, first_name, name, birthday, birthday_date, current_address, current_location, hometown_location, sex from user where uid = nnnn
作为所有者,结果如下:
过了一会儿,我在旧的FQL控制台上找到了家的位置。
但旧的查询仍然没有返回原址...
看起来像FB方面的一些缓存问题。
答案 3 :(得分:0)
这里的问题相同。我可以为None的朋友检索current_location或hometown_location。对于大多数人来说,我可以通过访问他们的个人资料轻松地看到它。已设置应用权限friends_location和friends_hometown。
答案 4 :(得分:0)
尝试此查询以获取朋友的当前位置
SELECT first_name,uid, last_name, current_location.name
FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND current_location
此外,您需要 friends_location 权限才能运行此查询