Закрыть окно всплывающее после входа в узел JS - PullRequest
0 голосов
/ 16 мая 2018

Я выполняю аутентификацию Azure в моем узле js bot.на последнем этапе он показывает всплывающие окна с магическим кодом.Я хочу закрыть это волшебное окно, всплывающее автоматически через 5 секунд.

это код

res.send('Welcome ' + req.user.displayName + '! Please copy this number and paste it back to your chat so your authentication can complete: ' + magicCode);

эта строка отправляет всплывающее окно с магическим кодом.Я хочу закрыть это окно через 5 секунд автоматически.мой код

server.get('/api/OAuthCallback/',
  passport.authenticate('azuread-openidconnect', { failureRedirect: '/login' }),
  (req, res) => {
    console.log('OAuthCallback');
    console.log(req);
    const address = JSON.parse(req.query.state);
    const magicCode = crypto.randomBytes(4).toString('hex');
    const messageData = { magicCode: magicCode, accessToken: req.user.accessToken, refreshToken: req.user.refreshToken, userId: address.user.id, name: req.user.displayName, email: req.user.preferred_username };
    magicNum = magicCode;

    var continueMsg = new builder.Message().address(address).text(JSON.stringify(messageData));
    console.log(continueMsg.toMessage());
    test_name = JSON.parse(req.user._raw).preferred_username.split("@")[0]
    bot.receive(continueMsg.toMessage());
    res.send('Sign-in successful');
  }
);

Заранее спасибо

1 Ответ

0 голосов
/ 17 мая 2018

Похоже, вы используете botauth lib, если так, то должна быть html-страница, которую вам нужно использовать для отображения magic code.

Этот html должен содержать похожий код js-скрипта, например:

document.getElementById("magic_code").innerText = (window.location.hash || '').replace('#', '');

И вы можете добавить следующий код, чтобы закрыть окно через 5 секунд

    setTimeout(() => {
        window.close();
    }, 5000);

Пример схожего кода на https://github.com/CatalystCode/node-authbot. И все используют процесс OAuth 2.0, который после успешного входа пользователя в систему провайдера аутентификации будет перенаправлять на ваш URL-адрес возврата, который вы настроили на своем сервере.

В вашем коде ваш обратный маршрут авторизации просто отправляет строку в браузере. Кроме того, вы можете отобразить HTML-страницу для вашего пользователя, однако вы столкнетесь с проблемой

Скрипты могут закрывать только те окна, которые были им открыты.

Так же, как вопрос, который вы задаете в комментарии.

К сожалению, есть несколько вопросов для этого на SO: window.close () не работает - скрипты могут закрывать только те окна, которые были им открыты window.close и self.close не закрывают окно в Chrome , и в настоящее время нет хорошего решения для этого.

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