Как я могу выполнить запрос OAuth, открывая новое окно, а не перенаправлять пользователя с текущей страницы?
Я выполнил аутентификацию OAuth с помощью Twitter и Facebook. В настоящее время на каждом из этих сайтов мой сервер перенаправляет пользователя на указанный URL (например, http://api.twitter.com/oauth/authorize с Twitter), затем получают параметры аутентификации по обратному URL.
Но таким образом, пользователи перенаправляются с моей страницы (на Facebook или Twitter) и возвращаются только после ввода правильного имени пользователя и пароля. Это похоже на способ http://techcrunch.com делать это, когда пользователь пытается чирикать сообщение.
Я помню, что на каком-то сайте я видел, что мы можем подключиться не путем перенаправления пользователя, а открыть всплывающее окно для ввода пользователем учетных данных. После завершения проверки подлинности всплывающее окно закрывается, основная страница обновляется новым контентом.
Это может быть очень простая задача с javascript, но я все еще не могу понять это. Я могу открыть URL-адрес аутентификации во всплывающем окне, но как получить результат и обновить главную страницу?
Ответы
Ответ 1
Предполагая, что вы открываете URL-адрес аутентификации во всплывающем меню с помощью window.open()
, вы можете получить доступ к родительскому окну, используя:
window.opener
и перезагрузить родительское окно (из всплывающего окна):
window.opener.location.reload();
Этот код должен быть подан на URL-адресе, который вы настроили как URL-адрес обратного вызова для успешной авторизации.
В общем случае поток должен быть:
- открыть всплывающее окно с авторизацией (например, на twitter.com)
- после успешной авторизации twitter перенаправляет пользователя на указанный вами URL (он открывается в том же всплывающем окне)
- окно открывателя перезагружается (через
window.opener.location.reload()
)
- закрыть всплывающее окно (с помощью javascript вы хотите)