0

Как вы знаете, с обновлением Facebook Graph API v2.0 вы больше не сможете найти всех друзей, меня/друзей ". Эта конечная точка теперь вернет только тех друзей, которые также зарегистрированы для одного и того же приложения (пользователи с приложениями). Чтобы получить всех друзей, Facebook предоставил новый API (taggable friends) в конечной точке «me/taggable_friends».Как фильтровать список друзей taggable и получать только те, которые еще не входят в список друзей, используя графический интерфейс Facebook.

Проблема, с которой я столкнулся, заключается в том, что список друзей taggable - это супер набор списка друзей, и нет надежного способа исключить последний из прежних. Таким образом, пользователи из списка «me/friends» также появятся под пользователями из списка «me/taggable_friends».

Например, предположим, что у меня есть всего 2 разных друга на Facebook, и оба они называются «Джо Хаммер». Давайте далее предположим, что только один из них также использует приложение, которое я использую. Приложение позволяет пользователям отмечать друзей на Facebook. Для этого есть раскрывающийся список, который показывает всех друзей, которые пользователь может пометить. Раньше он показывал оба «Joe Hammers» в списке, поскольку API «me/friends» вернет всех друзей. Теперь должны быть два отдельных списка: один, чтобы показать друзьям, которые уже используют приложение (результат «me/friends» или пользователи с приложениями), и второй список, чтобы пригласить тех, кто не использует приложение (результат «me/taggable_friends»). Однако на странице в первом списке будет правильно показан только один пользователь «Joe Hammer», зарегистрированный в приложении. Но во втором списке будут показаны и Джо Хаммерс, так как технически они оба являются помеченными. Поскольку результирующий набор, возвращенный из «me/taggable_friends», использует зашифрованные временные идентификаторы пользователей, мне не удастся отфильтровать пользователей из списка друзей taggable, которые уже находятся в списке зарегистрированных пользователей. Как вы можете себе представить, пользовательский интерфейс выглядит немного уродливым, когда дубликаты пользователей отображаются в обоих списках.

Можно утверждать, что это не обычный случай, и вы можете фильтровать по имени пользователя, пока это единственное поле, которое является общим между узлами обоих списков. Однако этот сценарий не является чем-то необычным. Я бы сказал, что по меньшей мере 5% пользователей будут иметь двух или более друзей с тем же именем.

ответ

1

Единственный способ, которым я могу думать (и я предполагаю, что это было ваше намерение тоже) - читать друзей с /me/taggable_friends и /me/friends и сравнивать их по названию. Те, кто не является результатом /me/friends, не используют приложение, очевидно.

Но имейте в виду, что вы должны использовать только taggable_friends для пометки друзей и ничего другого. Поэтому на самом деле нет смысла фильтровать их, пользователь должен решить, какие друзья он хочет пометить, независимо от того, используют ли они приложение или нет.