привет, собственно, пытаюсь решить следующую проблему:
на стороне бэкенда (на сервере), необходимо проверять от кого получаю запрос - от моего оригинального фронта (игрушка на Flash) или запросы на мой сервер присылает какой-то бот, эмулирующий запросы моего приложения.
Проблема заключается в том, что те данные, которые получает запущенная в iframe-е Флэшка (например sid), я не могу использовать в вызове vk api для какой-либо проверки, так как они просто не участвуют в передаваемых переменных на сервер api вконтакте, а все прочие параметры (например, uid пользователя), может передавать и бот...
Собственно, подскажите, каким способом именно с использованием vk api я могу проверить был ли сделан данной запрос из окружения вконтакте или откуда-нибудь ещё...
Проверка подлинности фронтэнда
Re: Проверка подлинности фронтэнда
Бот сможет передавать и все другие параметры...
Есть viewer_id + auth_key.
sig и sid участвуют при обращении к ВКонтакте API.
Можно не использовать метод VK.api, а делать прямое обращение через http.
http://vk.com/developers.php?oid=-1&p=% ... %D1%81_API
Есть viewer_id + auth_key.
sig и sid участвуют при обращении к ВКонтакте API.
Можно не использовать метод VK.api, а делать прямое обращение через http.
http://vk.com/developers.php?oid=-1&p=% ... %D1%81_API
Re: Проверка подлинности фронтэнда
Спасибо за ответ, однако, не могли бы подсказать, каким образом можно использовать viewer_id и auth_key в данном случае?
Точнее сказать, было бы достаточно просто отбрасывать те запросы, которые были инициированы не запущенным приложения из-под окружения вконтакте (пусть даже и от бота).
Сейчас я просто проверяю, существует ли в действительности ИД переданного пользователя (метод isAppUser из vk api) и установлено ли у него данное приложение, и если да, то продолжаю взаимодействовать, однако, в этом случае, можно будет запускать ботов откуда угодно. В идеале, было бы замечательно, если бы клиентское приложение передавало мне некий хэш сгенерённый самим вконтакте, и я бы мог его проверить (что такой хэш действительно создавался для данного приложения) при подключении уже со своего серверного бэкенда.
Точнее сказать, было бы достаточно просто отбрасывать те запросы, которые были инициированы не запущенным приложения из-под окружения вконтакте (пусть даже и от бота).
Сейчас я просто проверяю, существует ли в действительности ИД переданного пользователя (метод isAppUser из vk api) и установлено ли у него данное приложение, и если да, то продолжаю взаимодействовать, однако, в этом случае, можно будет запускать ботов откуда угодно. В идеале, было бы замечательно, если бы клиентское приложение передавало мне некий хэш сгенерённый самим вконтакте, и я бы мог его проверить (что такой хэш действительно создавался для данного приложения) при подключении уже со своего серверного бэкенда.
Re: Проверка подлинности фронтэнда
Код: Выделить всё
$auth_key = $_GET['auth_key'];$viewer_id = $_GET['viewer_id']; $real_key = md5($app_id."_".$viewer_id."_".$api_secret);if ($auth_key == $real_key){ }
Re: Проверка подлинности фронтэнда
Здравствуйте, Александр, благодарю за ответ, но к сожалению, предлагаемый Вами способ не подходит - если вычислять md5-хэш используя данные значения, auth_key и вычисленное значение получаются разные. Возможно, проблема заключается в версии VK-API, которая используется мною (3.0), либо что-то ещё... в общем, пока данный вопрос для меня остаётся актуальным.
Re: Проверка подлинности фронтэнда
благодарю, вопрос более не актуален. кстати, возможно кому-то будет полезно: замечу, что данный способ будет работать только тогда, когда для приложения включены платежи.
Александр, благодарю.
Александр, благодарю.
Re: Проверка подлинности фронтэнда
xdev
Все работает и без платежей
Все работает и без платежей