Как вы знаете, с обновлением Facebook Graph API версии 2.0 вы больше не можете получить всех друзей, используя конечную точку «я/друзья». Эта конечная точка теперь будет возвращать только тех друзей, которые также зарегистрированы в том же приложении (пользователи с областью действия приложения). Чтобы получить всех друзей, Facebook предоставил новый API (отмечаемые друзья) в конечной точке «me/tagable_friends».
Проблема, с которой я сталкиваюсь, заключается в том, что список друзей с тегами является надмножеством списка друзей, и нет надежного способа исключить последний из первого. Таким образом, пользователи из списка «я/друзья» также будут отображаться под пользователями из списка «я/отмечаемые_друзья».
Например, предположим, что у меня всего 2 разных друга на Facebook, и обоих зовут «Джо Хаммер». Давайте также представим, что только один из них также использует приложение, которое использую я. Приложение позволяет пользователям отмечать друзей на Facebook. Для этого есть раскрывающийся список, в котором показаны все друзья, которых пользователь может отметить. Раньше в списке отображались оба «Джо Хаммерс», поскольку API «я/друзья» возвращал всех друзей. Теперь должно быть два отдельных списка: один для отображения друзей, которые уже используют приложение (результат «я/друзья» или пользователи из области приложения), а второй список — для приглашения тех, кто не использует приложение. еще (результат "me/taggable_friends"). Однако на странице в первом списке будет правильно отображаться только один пользователь «Джо Хаммер», зарегистрированный в приложении. Но во втором списке будут показаны оба Джо Хаммера, поскольку технически они оба могут быть помечены. Поскольку набор результатов, возвращаемый из «me/taggable_friends», использует зашифрованные временные идентификаторы пользователей, у меня нет возможности отфильтровать пользователей из списка друзей с тегами, которые уже находятся в «зарегистрированном» списке друзей. Как вы можете себе представить, это делает пользовательский интерфейс немного уродливым, поскольку в обоих списках появляются дубликаты пользователей.
Кто-то может возразить, что это не общий случай и можно фильтровать по имени пользователя, так как пока это единственное поле, общее между узлами обоих списков. Однако такой сценарий не является редкостью. Я бы сказал, что по крайней мере 5% пользователей будут иметь двух или более друзей с одинаковым именем.