5

我试图在 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,但并非总是如此?

谢谢你。

4

5 回答 5

2

隐私设置的优先级高于 facebook api。

如果用户限制了隐私设置中的特定信息,即使用户授予权限,您也无法通过 facebook api(graph、fql、rest api)获取该信息。

例如

如果我在隐私设置中限制分享我的生日,那么即使他们要求,任何应用都无法获取我的生日。

此外,用户可以限制应用程序获取特定信息。

例如,用户可以允许应用xyz访问他们想要的一切,但同时用户可以限制应用xyz访问他的位置

我希望这回答了你的问题。

于 2012-05-28T22:17:27.003 回答
0

有两种可能性;当前位置为 null 的用户的朋友:

1) 没有在他们的 facebook 个人资料中指定他们的当前位置

2) 他们在他们的 facebook 个人资料中指定了当前位置,但他们的隐私设置拒绝你看到它

于 2012-05-04T08:47:35.177 回答
0

这里同样的问题。我可以为我的任何一个朋友检索 current_location 或 hometown_location。对于他们中的大多数人来说,我可以通过访问他们的个人资料很容易地看到它。应用程序权限 friends_location 和 friends_hometown 已设置。

于 2013-04-12T08:24:28.770 回答
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 控制台浏览器选项卡上 - 仍然没有主位置。
  • 在我的新 FQL 控制台浏览器选项卡上——我得到了家的位置。

过了一会儿,我在旧的 FQL 控制台上找到了家的位置。

但是旧的查询仍然没有返回家的位置......

似乎在 FB 端存在一些缓存问题。

于 2013-01-23T14:25:43.243 回答
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权限来运行这个查询

于 2014-02-02T13:42:48.180 回答