Перенаправление на родительский URL из обратного вызова после использования window.open - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь перенаправить URL обратного вызова обратно в родительское окно, которое вызывает window.open. В настоящее время URL-адрес обратного вызова открывается внутри дочернего окна, порожденного родительским окном.

Parent Window => Открывает дочернее окно для аутентификации => Пользователь аутентифицируется и перенаправляется в это дочернее окно. Как перенаправить в родительское окно?

Вот вызов window.open

newwindow = window.open(response.data.auth_url,'Etsy','height=800,width=1000');
if (window.focus) {
    newwindow.focus()
}

Есть идеи, как этого добиться?

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Вот решение, которое я придумала, если кто-нибудь еще столкнется с этой проблемой.

В моем файле angularJS Controller я проверяю две части информации, которые мне нужны, из URL обратного вызова:

if ($state.params.oauth_token && $state.params.oauth_verifier) {

    /* This closes the child window */
    $window.close();

    var params = {
        oauth_token: $state.params.oauth_token,
        oauth_verifier: $state.params.oauth_verifier
    };


    /* process the info ... */

}   

Я также опрашиваю, чтобы увидеть, когда сделан URL обратного вызова, и перенаправлю родительский элементокно

win = window.open(response.data.auth_url,'Etsy','height=800,width=1000'); 

var pollTimer = window.setInterval(function() { 
    try {
        if (win.document.URL.indexOf(response.data.callback_url) != -1) {

            window.clearInterval(pollTimer);

            $state.go("etsy.connected");

         }
     } catch(e) {
           // Error Handling            
     }
}, 500);
0 голосов
/ 17 июня 2019

Для связи между окнами используйте Postmessage

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...