@MelesMeles

Как теперь осуществить проверку профилей ВКонтакте на закрытость (с августа 2018) при помощи методов VK API?

При работе с методами VK API существует ограничение на число запросов к социальной сети (не более трех в секунду).
Например, метод friends.getMutual позволяет узнать общих друзей пользователя А и пользователя Б. Тогда, чтобы узнать всех общих друзей пользователя А со всеми его друзьями необходимо бы было сделать столько запросов friends.getMutual, сколько у пользователя А друзей.
Некоторые методы позволяют выполнять запросы по спискам. Таким образом, для friends.getMutual можно было бы передать пользователя А и список (Б, В, Г, ...) его друзей и обойтись всего двумя (не всегда, но не суть) запросами.
Проблема заключается в следующем: если хотя бы для одного пользователя из списка невозможно выполнить операцию, то весь список получает отказ от ВК без указания "виноватого" пользователя. То есть если, например, какой-то пользователь в списке удален/забанен (а значит нельзя узнать общих друзей), функция friends.getMutual не выполнится. Эту проблему можно было решить сделав запрос users.get по списку пользователей, получив информацию о забаненых и отфильтровав список от них. Таким образом, приходилось делать один дополнительный запрос (около 0.34 секунды), но проблема решалась.
А теперь к сути вопроса. Теперь ВК ввел "закрытые" профили. И если в списке есть закрытый профиль, то запросы так же не могут быть выполнены (конкретный профиль, на котором случилась ошибка, не указывается). Но (судя по документации) никак нельзя узнать закрыт ли профиль, то есть при запросе users.get к списку пользователей НЕ СУЩЕСТВУЕТ поля "закрыт\не закрыт", поэтому список отфильтровать нельзя. А значит, надо делать users.get к каждому пользователю и ловить ошибку "30 This profile is private". А значит, надо снова выполнить число запросов, равное числу пользователей, что будет очень долго. Тем более того же результата можно добиться только при помощи многократного вызова метода friends.get.
Собственно вопрос: сама социальная сеть еще не допилила функционал после нововведения или я упускаю какой-то метод проверки закрытости профиля?
Спасибо
  • Вопрос задан
  • 3422 просмотра
Решения вопроса 1
@StockholmSyndrome
отправляйте запросы методом users.get с версией 5.89
да, в документации нет этой версии, но с помощью неё можно получить информацию о закрытости профиля (поле "is_closed")
5ba7ab63e058f174270866.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы