如您所知,通过Facebook Graph API v2.0升级,您无法再使用“我/朋友”端点检索所有朋友。该端点现在将仅返回同样注册了相同应用程序(应用程序范围的用户)的朋友。为了检索所有的朋友,Facebook在端点“me / taggable_friends”提供了一个新的API(可标记的朋友)。
我遇到的问题是可标记的朋友列表是朋友列表的超级集合,并且没有可靠的方法将后者排除在前者之外。因此,来自“我/朋友”列表的用户也将出现在“me / taggable_friends”列表中的用户下。
例如,假设我在Facebook上共有2个不同的朋友,他们两个都被称为“Joe Hammer”。让我们进一步想象其中只有一个人也在使用我正在使用的应用程序。该应用程序允许用户在Facebook上标记朋友。为此,有一个下拉列表显示用户可以标记的所有朋友。之前它会在列表中显示“Joe Hammers”作为“我/朋友”API将返回所有朋友。现在必须有两个单独的列表,一个用于显示已经在使用应用程序的朋友(“我/朋友”结果或应用程序范围的用户),以及第二个列表,用于邀请未使用该应用程序的用户(“me / taggable_friends”结果)。但是,在页面上,第一个列表将正确显示在应用程序中注册的一个用户“Joe Hammer”。但第二个列表将显示Joe Hammers,从技术上讲它们都是可标记的。由于从“me / taggable_friends”返回的结果集使用加密的临时用户ID,因此我无法从已经在“已注册”的朋友列表中的可标记朋友列表中过滤掉用户。可以想象,这会让UI看起来有点难看,重复的用户会出现在两个列表中。
有人可能会争辩说这不是常见情况,您可以按用户名进行过滤,因为到目前为止,这是两个列表中节点之间唯一的共同字段。但是,这种情况并不罕见。我想说至少有5%的用户会有两个或更多同名朋友。
答案 0 :(得分:1)
我能想到的唯一方式(并且我认为这也是你的意图)是阅读/me/taggable_friends
和/me/friends
的朋友并按名称进行比较。那些不在/me/friends
结果中的人显然不会使用该应用程序。
但请记住,您只应使用taggable_friends
标记朋友而不是其他内容。因此过滤它们实际上没有多大意义,用户应该决定他想要标记哪些朋友,无论他们是否已经在使用该应用程序。