Поиск общих друзей на Facebook
Я хочу найти общих друзей между двумя случайными пользователями, используя Facebook Graph API v2.2.
Я прочитал документацию https://developers.facebook.com/docs/graph-api/reference/v2.2/user.context/mutual_friends В нем говорится: "Для просмотра обоюдного пользователя требуется действительный токен доступа с разрешением user_friends. друзья других друзей, использующих приложение. "
Есть ли способ найти номер и, возможно, имена всех общих друзей между currentUser и User2, если они не дружат друг с другом?
Я упоминал много других вопросов: Facebook Graph API 2.2 общие друзья => Нет ответов
Как получить Взаимных друзей через API Graph Facebook => Решение работает, только если два пользователя являются друзьями, что может быть не так в моем случае.
5 ответов
API Facebook не позволяет эту функцию: https://developers.facebook.com/bugs/346462608889036/
Я собираюсь реализовать это сам. У меня есть похожий случай использования, когда два пользователя могут не быть друзьями, но я хотел бы посмотреть, какие из их друзей взаимны.
Очевидно, что вы должны включить параметр "app proof" в запрос API от вашего сервера, когда два пользователя не являются общими друзьями:
Если вы хотите вызвать эту конечную точку от имени двух пользователей приложения, которые не являются друзьями, вы должны предоставить параметр appsecret_proof вместе с токеном доступа пользователя при выполнении запроса. Это означает, что вы должны вызывать эту конечную точку со своего сервера.
Похоже, это может быть хорошей идеей в любом случае.
Он работает для 2 пользователей, которые не являются друзьями.
Вот рабочий пример API общего друга на Facebook:
curl -G -d "access_token=<access_token>" -d "appsecret_proof=<appsecret_proof>" 'https://graph.facebook.com/v2.5/{user-id}?fields=context.fields(mutual_friends)'
Секретным доказательством приложения является sha256 токена доступа пользователя с секретным ключом приложения.
Помните, что оба пользователя должны использовать ваше приложение. В ответе будут пользователи, которые также используют ваше приложение и у которых есть разрешение на добавление в список друзей.
Если вы хотите найти конкретную информацию об общих друзьях, попробуйте это:
curl -G -d "access_token=<access_token>" -d "appsecret_proof=<appsecret_proof>" 'https://graph.facebook.com/v2.5/{user-id}?fields=context.fields(mutual_friends.fields(id,name,picture.type(large)))'
Это вернет идентификатор, имя и ссылку на текущее изображение профиля для всех общих друзей. Вам не нужно разрешение фотографии для этой картины.
Успел найти решение и оно работает. Если ваш звонок работает внутри вас и с кем-то еще, и вы оба друзья на Facebook, вам нужно создать Appsecret
который представляет App secret key found on Facebook Dev under My Apps
и знак. Вы создаете этот ключ, выполнив: $appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);
После этого вы передаете токен и секрет в качестве параметров для вызова:
Bundle params = new Bundle();
params.putString("appsecret_proof", appsecret_proof);
params.putString("access_token", access_token);
Это старый вопрос, но теперь я разобрался с ним, поэтому напишу...
чтобы получить всех общих друзей, если вы не его друг, он доступен только с сервера (в моем случае это Node), как указано здесь: https://developers.facebook.com/docs/graph-api/reference/user-context/all_mutual_friends/
получите токен user-2 и ваш идентификатор авторизации, а также сгенерируйте appsecretProof и clientSecret из админ-панели Facebook вашего приложения.
https://graph.facebook.com/v2.10/${auth_userId}?
fields=context.fields%28all_mutual_friends.limit%28100%29%29
&appsecret_proof=${appsecretProof}&access_token=${accessToken}
не забудьте спросить разрешения у пользователей при входе в систему, а также отправить обзор приложения в Facebook, чтобы одобрить эту функцию.
с разрешениями user_friends вы можете получить от клиента только общих друзей, которые используют в вашем приложении, но не всех общих друзей.