Страница 1 из 1

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

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

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

Мне не нужна платежная система, я просто хочу убедиться, что пользователь именно тот, за кого себя выдает, как быть?

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

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

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

Добавлено: 17 мар 2013, 16:47
qml
Casperovskii писал(а):Не знаток JS, но, может, можно проверить, находится ли ваше приложение в родительском фрейме и какой у этого фрейма адрес?
Знаю как проверить это на стороне клиента, что не надежно.
Casperovskii писал(а):Если нельзя - просто включи систему платежей, но не создавай ее. Тупо заглушка.
Я думал об этом, но это скорее хак, чем реальное решение, неужели нет "правильного" и простого способа(без включения платежной системы)?

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

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

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

Добавлено: 19 мар 2013, 04:26
sergiks
Эти параметры приходят вне зависимости от статуса приложения и подключения платёжной системы — и только так и можно убедиться в валидности юзера.

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

Добавлено: 19 мар 2013, 12:43
qml
Александр
sergiks
Спасибо, похоже auth_key действительно приходит всегда.
Документация к сожалению ужасно структурирована и местами очень запутана/не согласована.

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

Добавлено: 19 мар 2013, 13:23
Serge
qml
но вам уже писали - ничто не запрещает человеку зайти не из ВК, передав параметры. Первый раз можно через контакт их узнать, а потом подставлять в запросы извне.

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

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

В любом случае этого вполне достаточно для моего приложения, но я с радостью выслушал бы ваши предложения.

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

Добавлено: 19 мар 2013, 15:37
Serge
qml
я не то имею в виду. Вы хотите быть уверенным, что приложение запущено из ВК, а не по прямой ссылке. Я могу запустить его из ВК один раз, взять все параметры и переходить по прямой ссылке.
Я вообще никогда на заморачивался по этому поводу - при запуске приложения не из ВК (без передачи параметров) приложение просто ничего толкового не покажет (большая часть кода генерируется в php на сервере, уже после сверки ключей). Если же параметры были переданы - да в принципе все равно, откуда запущено приложение, я, честно сказать, не пойму, к чему такая проверка.

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

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