Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужно отследить редирект попап окна и получить url страницы на которую перешёл юзер (https://javascript.ru/forum/misc/65633-nuzhno-otsledit-redirekt-popap-okna-i-poluchit-url-stranicy-na-kotoruyu-pereshjol-yuzer.html)

alex.bityuckov@yandex.ru 30.10.2016 22:03

Нужно отследить редирект попап окна и получить 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.

Aetae 30.10.2016 22:10

Никак. Никто вам не даст следить за тем куда там ходит юзер.

alex.bityuckov@yandex.ru 30.10.2016 22:13

Почему?
У это же дочернее окно.

Aetae 30.10.2016 22:18

alex.bityuckov@yandex.ru, а какая разница? Что новое окно что новая вкладка, юзер может из неё куда угодно перейти.
Окно вам доступно только если домен тот же и не поменялся.

alex.bityuckov@yandex.ru 30.10.2016 22:20

То есть если юзер вобъёт в адресную строку попапа свою ссылку то я не смогу управлять окном через newWin?

Aetae 30.10.2016 22:26

Смотря что понимать под управлять. Перенаправить пользователя куда-нибудь всё ещё можно, а узнать где он - нет.

alex.bityuckov@yandex.ru 30.10.2016 22:32

Хорошо. В api вк есть такой абзац и он говорит, что сначало надо перенаправить пользователя, потом забрать из его адресной строки код и затем при помощи кода получить acess_token(только на сутки). Для обновления токена всё это надо провернуть снова, но пользователь не должен после перевого перенаправления что-то подтверждать т.к. он уже принимал раньше и всё вроде как можно сделать в автоматическом режиме. Отсюда вопрос как мне реализовать подобный функционал без попапа, то есть перенаправить пользователя и мониторить его url?

Aetae 30.10.2016 22:58

Нет. "Он" говорит не это.
"Он" говорит примерно следующее(детали могут отличаться, но суть всегда одна):
Цитата:

Сообщение от VK
3. Получение access_token
После успешной авторизации приложения браузер пользователя будет перенаправлен по адресу REDIRECT_URI, указанному при открытии диалога авторизации. При этом ключ доступа к API access_token и другие параметры будут передана в URL-фрагменте ссылки:
http://REDIRECT_URI#access_token=533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492

Очевидно, что в redirect_uri вам следует указать собственный сайт и принять токен на сервере. Но можно, если хочется, и получить из открытого окна через js, т.к. домены будут совпадать, связавшись через window.opener, либо периодически проверяя не появилоcь ли разрешения читать location открытого окна.

alex.bityuckov@yandex.ru 31.10.2016 17:11

C редиректом не вариант там ошибка в документации и можно использовать только url указанные в настройках приложения, но их просто нет для standalone приложения, поэтому можно использовать только такую ссылку для редирект https://oauth.vk.com/blank.html. А на счёт window.opener я не совсем понял как через него я должен отследить url дочернего окна? Он же даёт ссылку на родительское окно?

alex.bityuckov@yandex.ru 31.10.2016 17:33

Короче я немного погорячился на счёт ошибки в документации вк. Просто не совсем точно сказано. У них есть настройка доверенного uri, просто это находится в графе open api и его сначала надо включить полностью заполнить и только тогда появиться возможность добавлять доверенные uri, что весьма странно(так как можно работать с api и без open api). Но вопрос второй остался. Как через window.opener я должен отследить url дочернего окна? Он же даёт ссылку на родительское окно?


Часовой пояс GMT +3, время: 05:26.