Подтвердить что ты не робот

Как я могу выполнить запрос OAuth, открывая новое окно, а не перенаправлять пользователя с текущей страницы?

Я выполнил аутентификацию OAuth с помощью Twitter и Facebook. В настоящее время на каждом из этих сайтов мой сервер перенаправляет пользователя на указанный URL (например, http://api.twitter.com/oauth/authorize с Twitter), затем получают параметры аутентификации по обратному URL.

Но таким образом, пользователи перенаправляются с моей страницы (на Facebook или Twitter) и возвращаются только после ввода правильного имени пользователя и пароля. Это похоже на способ http://techcrunch.com делать это, когда пользователь пытается чирикать сообщение.

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

Это может быть очень простая задача с javascript, но я все еще не могу понять это. Я могу открыть URL-адрес аутентификации во всплывающем окне, но как получить результат и обновить главную страницу?

4b9b3361

Ответ 1

Предполагая, что вы открываете URL-адрес аутентификации во всплывающем меню с помощью window.open(), вы можете получить доступ к родительскому окну, используя:

window.opener

и перезагрузить родительское окно (из всплывающего окна):

window.opener.location.reload();

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

В общем случае поток должен быть:

  • открыть всплывающее окно с авторизацией (например, на twitter.com)
  • после успешной авторизации twitter перенаправляет пользователя на указанный вами URL (он открывается в том же всплывающем окне)
  • окно открывателя перезагружается (через window.opener.location.reload())
  • закрыть всплывающее окно (с помощью javascript вы хотите)