Убедиться, что приложение запущенно со страницы ВКонтакте

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
qml
Сообщения: 5
Зарегистрирован: 17 мар 2013, 08:02

Убедиться, что приложение запущенно со страницы ВКонтакте

Сообщение qml »

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

Вроде должна помочь проверка auth_key == md5(api_id + '_' + viewer_id + '_' + api_secret).
Но в документации про него написано:
"Этот параметр приходит, если в приложении включена система платежей (во вкладке Платежи при редактировании приложения)."

Мне не нужна платежная система, я просто хочу убедиться, что пользователь именно тот, за кого себя выдает, как быть?
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Авторизация

Сообщение Casperovskii »

Не знаток JS, но, может, можно проверить, находится ли ваше приложение в родительском фрейме и какой у этого фрейма адрес?
Если нельзя - просто включи систему платежей, но не создавай ее. Тупо заглушка.
qml
Сообщения: 5
Зарегистрирован: 17 мар 2013, 08:02

Re: Авторизация

Сообщение qml »

Casperovskii писал(а):Не знаток JS, но, может, можно проверить, находится ли ваше приложение в родительском фрейме и какой у этого фрейма адрес?
Знаю как проверить это на стороне клиента, что не надежно.
Casperovskii писал(а):Если нельзя - просто включи систему платежей, но не создавай ее. Тупо заглушка.
Я думал об этом, но это скорее хак, чем реальное решение, неужели нет "правильного" и простого способа(без включения платежной системы)?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Убедиться, что приложение запущенно со страницы ВКонтакте

Сообщение Александр »

qml
А сейчас во вкладке Настройки не видно Защищенный ключ? Без включения платежной системы?
В документации информацию просто могли не обновить. Этот же защищенный ключ требуется для вызова серверных методов, среди которых есть не только платежные.
Нет ничего плохого в том чтобы включить платежную систему, только для того чтобы использовать защищенный ключ.

Вообще для проверки может быть достаточно посмотреть flashvars переменные: api_id, viewer_id - если их нет, то вероятнее всего приложение открыто не на сайте ВКонтакте (или уже внутри приложения эти данные не передаются). C auth_key будет надежнее, но всё равно можно просто подставить все данные в ссылку и открыть не внутри ВКонтакте.
Аватара пользователя
sergiks
Сообщения: 51
Зарегистрирован: 06 окт 2012, 11:59

Сообщение sergiks »

Эти параметры приходят вне зависимости от статуса приложения и подключения платёжной системы — и только так и можно убедиться в валидности юзера.
qml
Сообщения: 5
Зарегистрирован: 17 мар 2013, 08:02

Re: Убедиться, что приложение запущенно со страницы ВКонтакте

Сообщение qml »

Александр
sergiks
Спасибо, похоже auth_key действительно приходит всегда.
Документация к сожалению ужасно структурирована и местами очень запутана/не согласована.
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Убедиться, что приложение запущенно со страницы ВКонтакте

Сообщение Serge »

qml
но вам уже писали - ничто не запрещает человеку зайти не из ВК, передав параметры. Первый раз можно через контакт их узнать, а потом подставлять в запросы извне.
qml
Сообщения: 5
Зарегистрирован: 17 мар 2013, 08:02

Re: Убедиться, что приложение запущенно со страницы ВКонтакте

Сообщение qml »

Serge
Подделать auth_key не зная api_secret нельзя.
Конечно можно воспользоваться компьютером(с залогиненым аккаунтом) пользователя и стянуть этот самый auth_key, но имея доступ к этому компьютеру злоумышленник и не такое в принципе способен сделать.

В любом случае этого вполне достаточно для моего приложения, но я с радостью выслушал бы ваши предложения.
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Убедиться, что приложение запущенно со страницы ВКонтакте

Сообщение Serge »

qml
я не то имею в виду. Вы хотите быть уверенным, что приложение запущено из ВК, а не по прямой ссылке. Я могу запустить его из ВК один раз, взять все параметры и переходить по прямой ссылке.
Я вообще никогда на заморачивался по этому поводу - при запуске приложения не из ВК (без передачи параметров) приложение просто ничего толкового не покажет (большая часть кода генерируется в php на сервере, уже после сверки ключей). Если же параметры были переданы - да в принципе все равно, откуда запущено приложение, я, честно сказать, не пойму, к чему такая проверка.
qml
Сообщения: 5
Зарегистрирован: 17 мар 2013, 08:02

Re: Убедиться, что приложение запущенно со страницы ВКонтакте

Сообщение qml »

Serge
Возможно я неверно выразился, да и к тому же кто-то изменил заголовок темы, меня интересовала именно авторизация(изначально там именно об этом и говорилось).
Мне важно скорее соответсвие viewer_id и пользователя, чем то, откуда открыта страница.
Ответить