Как теперь осуществить проверку профилей ВКонтакте на закрытость (с августа 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.
Собственно вопрос: сама социальная сеть еще не допилила функционал после нововведения или я упускаю какой-то метод проверки закрытости профиля?
Спасибо
отправляйте запросы методом users.get с версией 5.89
да, в документации нет этой версии, но с помощью неё можно получить информацию о закрытости профиля (поле "is_closed")