Вместо вступления или пара слов о...
Приветствую всех. Сегодня я расскажу о том, что веб-сайты имеют таки возможность добавлять посты на стену НЕ через js, а вполне себе обычным, standalone-методом. Не знаю, открою ли я Америку, но родилась данная идея от большой жажды исследований, нежелания подчиняться правилам и нескольких заказчиков, которым уж очень хотелось именно такой возможности.
How it works?
Приложения контакта делятся на 3 типа. Разница между первым и вторым является камнем преткновения, так как в обычных условиях мы не можем выбрать Standalone для веба (адрес куда будут отсылаться токены намертво зашит), но очень хочется!
Но вот в чем дело, после долгих блужданий по сети я наткнулся-таки на подключенные сайты, которые могли размещать посты так, как это делают Standalone-приложения. Но как, черт подери?
Первым делом смотрим на запрос в адресной строке^
И не видим ничего необычного, разве что scope=wall не игнорируется. Секундочку, что за черт?
Естественно ставим свой client_id и redirect_uri, жмем ентер и… облом. Тогда появляется вопрос, собственно, почему мир так несправедлив?
От отчаянья лезем в документацию контакта и читаем про клиентскую авторизацию, а потом опять задаем себе вопрос — ну раз «избранное приложение» может постить на стену может у него и еще какие скрытые возможности затаились? Барабанная дробь…
Меняем redirect_uri на свой домен и response_type на token (у нас же нет секретного ключа чтобы получать токен через code) и…
oauth.vk.com/authorize?client_id=2905274&redirect_uri=localhost&response_type=token&scope=wall%2Coffline
На сервере лежит свежеиспеченный токен.
В чем суть?
Используя только публичный ID избранного приложения (я нашел всего 3 таких, может их больше) мы имеем возможность делать редирект при авторизации на любую страницу. Единственное что огорчает потенциального пользователя — описание приложения при наведении на шестеренку в посту. Это описание будет описанием избранного приложения, но разве много кого заботит этот факт.
Второй вариант добиться того же эффекта но без минуса, то есть использовать свое приложение — curl.
Спасибо за внимание.