Нужно отследить редирект попап окна и получить url страницы на которую перешёл юзер
Создаю окно
var newWin = window.open('https://oauth.vk.com/authorize?client_id=5696649&display=popup&redirect _uri=https://oauth.vk.com/blank.html%20&scope=messages,friends&response_type =code&v=5.59', "vk", "width=200,height=200"); newWin.focus(); Не смог отыскать в гугле как отследить изменение url попап окна. То есть юзер кликает по копке и переходит на страницу ответа и мне после этого надо вытащить новый url. |
Никак. Никто вам не даст следить за тем куда там ходит юзер.
|
Почему?
У это же дочернее окно. |
alex.bityuckov@yandex.ru, а какая разница? Что новое окно что новая вкладка, юзер может из неё куда угодно перейти.
Окно вам доступно только если домен тот же и не поменялся. |
То есть если юзер вобъёт в адресную строку попапа свою ссылку то я не смогу управлять окном через newWin?
|
Смотря что понимать под управлять. Перенаправить пользователя куда-нибудь всё ещё можно, а узнать где он - нет.
|
Хорошо. В api вк есть такой абзац и он говорит, что сначало надо перенаправить пользователя, потом забрать из его адресной строки код и затем при помощи кода получить acess_token(только на сутки). Для обновления токена всё это надо провернуть снова, но пользователь не должен после перевого перенаправления что-то подтверждать т.к. он уже принимал раньше и всё вроде как можно сделать в автоматическом режиме. Отсюда вопрос как мне реализовать подобный функционал без попапа, то есть перенаправить пользователя и мониторить его url?
|
Нет. "Он" говорит не это.
"Он" говорит примерно следующее(детали могут отличаться, но суть всегда одна): Цитата:
|
C редиректом не вариант там ошибка в документации и можно использовать только url указанные в настройках приложения, но их просто нет для standalone приложения, поэтому можно использовать только такую ссылку для редирект https://oauth.vk.com/blank.html. А на счёт window.opener я не совсем понял как через него я должен отследить url дочернего окна? Он же даёт ссылку на родительское окно?
|
Короче я немного погорячился на счёт ошибки в документации вк. Просто не совсем точно сказано. У них есть настройка доверенного uri, просто это находится в графе open api и его сначала надо включить полностью заполнить и только тогда появиться возможность добавлять доверенные uri, что весьма странно(так как можно работать с api и без open api). Но вопрос второй остался. Как через window.opener я должен отследить url дочернего окна? Он же даёт ссылку на родительское окно?
|
window.opener - это если б редиректило на вашу же страницу.
Насколько я понял, если у вас "standalone" приложение, то подразумевается, что оно работает не в обычном браузере, а является именно именно приложением и для запроса токена использует webview или аналоги. Над webview изнутри приложения вы само собой имеете полный контроль и можете получить результирующий url. |
Методом изучения документации снизу вверх я примерно до этого и дошёл. Отсюда вопрос:"Как сэмулировать браузер на js прямо на странице?", "Возможно ли такое извращение?". Нам просто необходим данный функционал(отправить сообщение в веб-приложении).
|
Если вообще такое не возможно, то как вообще можно будет реализовать необходимый функционал, с условием что на страницу показываемую пользователем я могу загружать только js код.
|
Только на js - никак.
Мб вам и не нужны права sandalone и хватит обычных? Если таки нужны - то только просить пользователя скопировать вам этот самый токен. Вроде(не уверен) если запросить разрешение "offline", то он будет вечным. |
Обычных прав не хватит это точно. Уже проверил. Offline token тоже не подойдёт, с него нельзя сообщения отправлять(тоже проверял). Если просто скопировать токен то он через сутки протухнет, а каждый день просить не вариант. Отсюда я вижу два решения: либо запихнуть в js браузер и контролировать его, либо писать сервер и как то при помощи сервера эмулировать браузер у пользователя
|
А вы как считаете?
|
Ну через сервер всё можно, практически обычное проксирование. Наверняка можно нагуглить готовый код для этой задачи.
А браузер в браузере сделать не получится, ибо все ограничения на внешние запросы остаются. |
Тогда будем считать тему закрытой. Большое спасибо за инфу.
|
Часовой пояс GMT +3, время: 18:57. |