2011-09-30 9 views
25

Uwierzytelniłem OAuth na Twitterze i Facebooku. Obecnie, przy każdej z tych witryn, mój serwer przekierowuje użytkownika do określonego adresu URL (na przykład http://api.twitter.com/oauth/authorize na Twitterze), a następnie odbiera parametry uwierzytelnienia według adresu URL wywołania zwrotnego.Jak mogę wykonać żądanie OAuth przez otwarte nowe okno, zamiast przekierowywać użytkownika z bieżącej strony?

Ale w ten sposób użytkownicy są przekierowywani z mojej strony (do Facebooka lub Twittera) i zwracają tylko po wprowadzeniu prawidłowej nazwy użytkownika & hasło. To tak, jak robisz to, gdy użytkownik próbuje tweetować wpis.

Pamiętam, że w niektórych witrynach widziałem, że możemy się połączyć nie przez przekierowanie użytkownika, ale zamiast tego otworzyć okno wyskakujące dla użytkownika, aby wprowadzić dane uwierzytelniające. Po zakończeniu uwierzytelniania zamknęło się okno pop-up, strona główna odświeży się z nową treścią.

To może być bardzo proste zadanie z javascript, ale nadal nie mogę tego rozgryźć. Mogę otworzyć adres URL uwierzytelnienia w wyskakującym okienku, ale jak uzyskać wynik aktualizacji głównej strony na &?

Odpowiedz

43

Zakładając, że otwierasz uwierzytelniania URL w pop-up przy użyciu window.open(), można uzyskać dostęp do okna nadrzędnego za pomocą:

window.opener 

i do reload okna nadrzędnego (od pop-up) używać:

window.opener.location.reload(); 

Ten kod powinien zostać wyświetlony w url, który został skonfigurowany jako URL oddzwonienia powitalnego autoryzacji oauth.

Generalnie przepływ powinny być:

  • otworzyć wyskakujące stronę autoryzacji (na twitter.com na przykład)
  • po udanej autoryzacji twitter przekierowuje użytkownika do adresu URL podany przez Ciebie (to zostanie otwarty w tym samym pop-up)
  • okno otwieracz dostaje Reaktywacja (poprzez window.opener.location.reload())
  • zamknąć sam pop-up (przy użyciu JavaScript jest chcesz)
+0

masz na myśli umieszczam javascript w oknie wyskakującym, aby to zrobić? –

+6

Tak, w wyskakującym okienku, na stronie, która jest oddzwanianiem powodzenia autoryzacji oauth. Tak więc przepływ jest następujący: otwierasz wyskakujące okienko ze stroną autoryzacji (na przykład na twitter.com), po udanej autoryzacji twitter przekierowuje użytkownika na podany przez ciebie adres URL (otwiera się w tym samym oknie podręcznym), na tym strona wywołania zwrotnego, którą umieścisz javascript z mojej odpowiedzi, okno * otwieracza * zostanie przeładowane i możesz po prostu zamknąć wyskakujące okienko przy użyciu javascriptu. – WTK

+0

Spróbuję od razu. –

Powiązane problemy