Находим общих друзей людей с использованием VK API. Как узнать важных друзей в вк у друга

Привет, хабраюзер.
Однажды у меня возникла необходимость найти человека, зная его внешний вид и зная о его членстве в определенном клубе. Также я владел адресами(вконтакте) страниц двух других членов клуба. Почти наверняка искомый человек был у каждого из них в друзьях. Решить эту проблему можно было разными путями. В статье я напишу о том, как мной было реализовано решение с использованием vk.com API.
1.Задача
Сделать сервис, который будет находить всех общих друзей двух отдельно взятых пользователей, не требуя верификации и аккаунта в социальной сети для пользователей сервиса. Получить данные об общих друзьях:
  • фотография
Реализовать задание на базе API вконтакте. Написать отельный класс для этого.
2.Решение
2.1.Определяем необходимые методы API
Заходим в список методов API. И поискав, находим то, что нам нужно.

Для получения друзей пользователя есть метод friends.get .
friends.get - возвращает список идентификаторов друзей пользователя или расширенную информацию о друзьях пользователя (при использовании параметра fields).

И, что важно, в рамках решения поставленной задачи это открытый метод, не требующий access_token.

Обязательный параметр только один:

Используя данный метод, можно получить информацию обо всех друзьях каждого из двух наших множеств, но такой подход не будет оптимальным. Пользователь А может иметь 2000 людей в друзьях, пересекаться с друзьями пользователя В будут только 3 человека. В таком случае информация о 1997 пользователях будет нам ненужной, и ресурсы, затраченные на её получение, будут потрачены впустую.
Мы будем запрашивать исключительно идентификаторы пользователей, и получив нужные нам номера(которые принадлежат множеству А и В), уже по ним выбирать информацию.

Для получения информации о пользователе есть метод users.get .
users.get - Возвращает расширенную информацию о пользователях.

Данный метод также не нуждается в access_token, то есть идеально подходит для нашей задачи.


В user_ids мы передадим массив идентификаторов пользователей, которые встречаются в обоих множествах.
Мы хотим получить только аватар размером 100*100, для этого в параметре fields передадим значение photo_100.

2.2.Переходим к практической стороне
Я написал простой класс на php:

Class VkFriends { public function clean_var($var) { $var = strip_tags($var); $var = preg_replace("~\D+~", "", $var); $var = trim($var); return $var; } public function get_friends($u_id) { $friends = file_get_contents("https://api.vk.com/method/friends.get?user_id=".$u_id); $friends = json_decode($friends); if(!isset($friends->error)){ return $friends; }else{ return ""; } } public function mutual_friends($friends) { $mutual = array_intersect($friends->response, $friends->response); if(!empty($mutual)){ return $mutual; }else{ return ""; } } public function get_users_info($users) { $u_ids = implode(",",$users); $u_info = file_get_contents("https://api.vk.com/method/users.get?user_ids=".$u_ids."&fields=photo_100"); $u_info = json_decode($u_info); return $u_info; } public function view_user_info($u_info) { $uid = $u_info->uid; $first_name = $u_info->first_name; $last_name = $u_info->last_name; = $u_info->photo_100; print("

"); } public function view_users_info($users_info) { for($i=0;$iresponse);$i++){ $this->view_user_info($users_info->response[$i]); } } }

Теперь смотрим на наш класс в действии:

$vkf = new VkFriends; $u_id = $vkf->clean_var($_POST["u1"]);//clean variables from POST $u_id = $vkf->clean_var($_POST["u2"]); if(($u_id!="")&&($u_id!="")){ echo "

"; $friends = $vkf->get_friends($u_id);//getting friends list from user with u_id $friends = $vkf->get_friends($u_id); if(($friends!="")&&($friends!="")){ $mutual = $vkf->mutual_friends($friends);//create new array from intersect arrays if($mutual!=""){ $users_info = $vkf->get_users_info($mutual);//getting info about users that are mutual $vkf->view_users_info($users_info);//view information about selected users }else{ print("

Наверное, многие из нас замечали ВКонтакте вкладку «Возможные друзья» , но не каждый знает для чего она и как работает. Именно об этом и пойдет речь в данной статье.

Давайте взглянем, как выглядит вкладка «Возможные друзья» , возможно кто-то ее не замечал.

А многие ли, из тех, кто о ней знает, догадались, как работает эта функция, и по какому принципу она определяет людей, с которыми мы, возможно, знакомы? Все очень просто. Откроем этот раздел и изучим его детальнее. Сделав это вы заметите, что большинство людей, которые там находятся — это те, с которыми мы общались, но не добавляли в друзья, либо у нас с ними есть общие друзья. Теперь уже немного понятнее каким образом работает данная функция, но это не все.

Сначала данный список формируется, основываясь на людях, с которыми у вас есть общие друзья. Далее это целая цепочка. Выискиваются те пользователи, у которых в профиле указан тот же город, что и у вас, та же работа и прочие факторы. То есть, это умный алгоритм, который постоянно обновляет список ваших возможных друзей. Допустим, вы добавили кого-то в друзья и сразу же, из списка его друзей, найдутся те, у кого есть общие с вами друзья, и они будут предложены вам, как ваши возможные знакомые. Вот весь принцип работы раздела «Возможные друзья» .

Конечно, точную и достоверную информацию получить невозможно. Это знают только разработчики сайта ВКонтакте. Можно сделать предположение, что VK собирает обезличенные данные, которые привязаны к идентификатору, или покупает их у других сетей. Но это лишь предположение, и не стоит бояться, ваши личные данные не собираются.

Заключение

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

Вы и ваш бывший/бывшая за время отношений завели много новых друзей? Печально, но теперь вы расстаетесь. Как завершить отношения с бывшим/бывшей, не потеряв общих друзей?

Шаги

    Не обсуждайте с ними ваш разрыв. В такой ситуации всегда есть две точки зрения. Оставьте свою для обсуждения с семьей и теми друзьями, с которыми вы были знакомы еще до того, как вступили в отношения.

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

    Раскрывайте информацию осторожно. Поскольку это ваши общие друзья, помните, что все, что вы скажете им, может дойти до вашего бывшего. Это может испортить все ваши попытки расстаться по-хорошему.

    Поддерживайте контакт. Этот момент весьма непростой, поскольку общие друзья крепко связывают вас со старыми отношениями, – и сердцем и разумом. Тем не менее, если вы хотите сохранить дружбу, вы должны понимать, что ваши общие друзья могут просто не знать, как вести себя с вами в данной ситуации, поэтому вы должны показать им (телефонным звонком или по электронной почте), что хотите и дальше поддерживать связь. Как уже говорилось, вы должны быть осторожны и не раскрывать друзьям информации, которая не должна дойти до вашего бывшего; тем не менее, делитесь с ними своими чувствами и переживаниями относительно происходящего, чтобы они по-прежнему чувствовали себя частью вашей жизни. Вы можете, например, сказать: "Учитывая все обстоятельства, я чувствую себя довольно неплохо. Конечно, непросто начинать все сначала, но я надеюсь, что худшее позади, и я готов(а) двигаться дальше"

    Если вы уже встречаетесь с новым человеком, держите его подальше от общих друзей. Встреча может вызвать возмущение и будет сопровождаться негативными предрассудками, просто потому что это новая любовь. Друзья будут чувствовать, что предадут своего друга (вашего бывшего), если им понравится ваш новый партнер, который занял его место. До определенного момента держите свои новые симпатии в тайне. Дождитесь, пока “пыль рассеется”, и вы не почувствуете под ногам твердую почву, – только после этого можно пытаться познакомить общих друзей с новой симпатией.

    Говоря о ваших совместных встречах, не следует ждать того, что из пары пригласят только вас. Некоторые ваши друзья не захотят ставить перед собой непростой выбор кого приглашать, – вас или бывшего/бывшую. Вероятнее всего, они пригласят вас обоих с мыслью о том, что вы взрослые люди и сами разберетесь с ситуацией. В больших компаниях это вполне уместно, но в тесном кругу близких друзей это будет нело-о-о-вко . Избегайте таких ситуаций, напрямую задавая вопрос, будет ли на вечеринке ваш бывший/бывшая. Почти наверняка вам ответят честно. Не закатывайте истерики, заставляя приглашающего вас друга чувствовать себя виноватым. Просто выразите свои сожаления, если считаете, что на этой встрече вам обоим будет неловко: "А, ну ладно... Я, наверно, не пойду, это будет слишком тесная компания. Но ты не переживай, можно будет собраться в другой раз, когда людей будет больше, и мы сможем отвлечься". Улыбнитесь, будьте доброжелательны и поблагодарите человека за то, что он подумал о вас.

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

    • Вместо этого, спокойно и внушительно скажите что-нибудь подобное: "Знаете, ребята, во время расставания я злилась/злился, но теперь я чувствую сожаление, и мне грустно. За время отношений у нас с ним/ней было много хорошего. Несмотря на то, что теперь нужно двигаться дальше, я не жалею о времени, которое мы провели вместе. Если бы не ____(имя бывшего/бывшей), я бы никогда вас не встретил/встретила". После этого просто замолчите. Ваши друзья закивают в ответ и оценят ваши высокие моральные принципы.
  1. Позвольте времени позаботиться обо всем остальном. Расставание напоминает сломанную руку. Она ужасно болит, и вы мало что можете сделать после того, как наложили гипс, кроме единственного, – дать ей время. Все что вам остается – вытерпеть боль и справиться с изменениями, которые произошли в вашей жизни. Спустя время, если вы не будете критиковать вашего бывшего и не станете принимать участие в шутках над ним, ваши друзья поймут, что вы пережили это и двигаетесь дальше.

  • Со временем, ваша дружба укрепится в новых условиях. Друзья начнут воспринимать вас не как часть пары, а как отдельного человека. Лишь после этого вы можете посвящать их в ваши новые романтические отношения.
  • Вашим друзьям тоже нужно время. Они знали вас как часть пары, которую любили, и теперь им тоже нужно приспособиться к новым обстоятельствам. Они могут отпускать неловкие или даже злые замечания, потому что не знают, кого винить в произошедшем, и что делать. Ведите себя мягко по отношению к ним и имейте в виду, что они просто не понимают, как себя вести в сложившейся ситуации.
  • Посещая вечеринки или отправляясь на прогулку вместе с общими друзьями, не стесняйтесь спрашивать их о том, приглашен ли ваш бывший. Объясните друзьям, что вам нужно время и немного личного пространства, чтобы быть готовыми к более тесному контакту с бывшим, чем он будет на действительно многолюдных вечеринках.

Предупреждения

  • Может выясниться, что некоторые ваши "друзья" таковыми совершенно не являются. Опасайтесь шпионов, которые тайно наблюдают за вами, собирая информацию для вашего бывшего. Это предупреждение особенно актуально, если вы проходите через развод. И в этой ситуации вы будете как никогда рады тому, что не открыли своих новых симпатий.
  • Не спешите справляться с расставанием слишком хорошо или слишком рано. Помните о том, что ваши общие друзья питают теплые чувства и к вашему бывшему. Если им покажется, что вы легко выбросили его из своей жизни, будто он был чем-то ненужным (даже если это так), друзья решат, что вы поступаете холодно и бессердечно. Сопротивляйтесь искушению похвастаться новым симпатичным парнем (новой симпатичной девушкой), и вместо этого сосредоточьтесь на чувствах друзей .
  • Любые язвительные или агрессивные замечания в адрес вашего бывшего критически снижают ваши шансы сохранить дружбу с вашими общими друзьями.
Привет, хабраюзер.
Однажды у меня возникла необходимость найти человека, зная его внешний вид и зная о его членстве в определенном клубе. Также я владел адресами(вконтакте) страниц двух других членов клуба. Почти наверняка искомый человек был у каждого из них в друзьях. Решить эту проблему можно было разными путями. В статье я напишу о том, как мной было реализовано решение с использованием vk.com API.
1.Задача
Сделать сервис, который будет находить всех общих друзей двух отдельно взятых пользователей, не требуя верификации и аккаунта в социальной сети для пользователей сервиса. Получить данные об общих друзьях:
  • фотография
Реализовать задание на базе API вконтакте. Написать отельный класс для этого.
2.Решение
2.1.Определяем необходимые методы API
Заходим в список методов API. И поискав, находим то, что нам нужно.

Для получения друзей пользователя есть метод friends.get .
friends.get - возвращает список идентификаторов друзей пользователя или расширенную информацию о друзьях пользователя (при использовании параметра fields).

И, что важно, в рамках решения поставленной задачи это открытый метод, не требующий access_token.

Обязательный параметр только один:

Используя данный метод, можно получить информацию обо всех друзьях каждого из двух наших множеств, но такой подход не будет оптимальным. Пользователь А может иметь 2000 людей в друзьях, пересекаться с друзьями пользователя В будут только 3 человека. В таком случае информация о 1997 пользователях будет нам ненужной, и ресурсы, затраченные на её получение, будут потрачены впустую.
Мы будем запрашивать исключительно идентификаторы пользователей, и получив нужные нам номера(которые принадлежат множеству А и В), уже по ним выбирать информацию.

Для получения информации о пользователе есть метод users.get .
users.get - Возвращает расширенную информацию о пользователях.

Данный метод также не нуждается в access_token, то есть идеально подходит для нашей задачи.


В user_ids мы передадим массив идентификаторов пользователей, которые встречаются в обоих множествах.
Мы хотим получить только аватар размером 100*100, для этого в параметре fields передадим значение photo_100.

2.2.Переходим к практической стороне
Я написал простой класс на php:

Class VkFriends { public function clean_var($var) { $var = strip_tags($var); $var = preg_replace("~\D+~", "", $var); $var = trim($var); return $var; } public function get_friends($u_id) { $friends = file_get_contents("https://api.vk.com/method/friends.get?user_id=".$u_id); $friends = json_decode($friends); if(!isset($friends->error)){ return $friends; }else{ return ""; } } public function mutual_friends($friends) { $mutual = array_intersect($friends->response, $friends->response); if(!empty($mutual)){ return $mutual; }else{ return ""; } } public function get_users_info($users) { $u_ids = implode(",",$users); $u_info = file_get_contents("https://api.vk.com/method/users.get?user_ids=".$u_ids."&fields=photo_100"); $u_info = json_decode($u_info); return $u_info; } public function view_user_info($u_info) { $uid = $u_info->uid; $first_name = $u_info->first_name; $last_name = $u_info->last_name; = $u_info->photo_100; print("

"); } public function view_users_info($users_info) { for($i=0;$iresponse);$i++){ $this->view_user_info($users_info->response[$i]); } } }

Теперь смотрим на наш класс в действии:

$vkf = new VkFriends; $u_id = $vkf->clean_var($_POST["u1"]);//clean variables from POST $u_id = $vkf->clean_var($_POST["u2"]); if(($u_id!="")&&($u_id!="")){ echo "

"; $friends = $vkf->get_friends($u_id);//getting friends list from user with u_id $friends = $vkf->get_friends($u_id); if(($friends!="")&&($friends!="")){ $mutual = $vkf->mutual_friends($friends);//create new array from intersect arrays if($mutual!=""){ $users_info = $vkf->get_users_info($mutual);//getting info about users that are mutual $vkf->view_users_info($users_info);//view information about selected users }else{ print("

Общие друзья ВК помогают пользователям активно расширять круг своего общения. В данную категорию входят юзеры, которые связаны дружбой и с Вами, и с владельцем просматриваемой страницы.

Увидеть общих в VK довольно просто. Для этого нужно зайти на страницу пользователя и обратить внимание на меню под аватаркой. Первый же блок называется «Общие друзья», где и отображены юзеры из данной категории. Есть еще один способ, который также не вызовет никаких трудностей. Войдя на страничку человека, кликнуть раздел с его друзьями. Наверху экрана найти вкладку «Общие друзья». При желании можно быстро добавить в друзья тех из них, кто Вам наиболее симпатичен.

Внимание! Список возможных друзей формируется на основе «общих». В первую очередь, в него попадают те люди, с которыми Вы связаны через максимальное количество товарищей.

Общие друзья двух людей в ВК

В данный момент есть интересный способ посмотреть общих друзей у двух пользователей ВКонтакте. Речь идет о сервисе 220 vk.com. Вот краткая инструкция о том, как сделать работу с VK еще более простой:

  • Заходим на сайт vk.com.
  • На экране видим два поля. В первом пишем идентификационный код (ID) одного пользователя, во втором - код другого. При желании вместо ID можно заменить ссылками на их скопированные из адресной строки браузера.

    Нажимаем на кнопку «Искать общих друзей» и получаем результат.

Кроме того, на сайте можно вычислить скрытых друзей пользователя VK, узнать черные списки, в которых находитесь, а также определить пользователей, которые занесли Вас в «скрытые друзья».

Вот, пожалуй, вся информация о том, что такое общие друзья в ВКонтакте, для чего они нужны и как их просмотреть. Остаётся лишь применить полученные знания на практике, расширив свои возможности для общения в социальной сети.



Просмотров