2011-09-30 24 views
25

Twitter ve Facebook ile OAuth kimlik doğrulaması yaptım. Şu anda, bu sitenin her biriyle, sunucum kullanıcıyı belirli bir URL'ye yönlendiriyor (örneğin, Twitter ile http://api.twitter.com/oauth/authorize), daha sonra geri arama url'si ile kimlik doğrulama parametrelerini alıyorsunuz.OAuth isteğini, geçerli sayfadan kullanıcıyı yeniden yönlendirmek yerine, açık yeni pencere ile nasıl yapabilirim?

Ancak bu sayede kullanıcılar sayfamdan (Facebook veya Twitter) yönlendiriliyor ve yalnızca kullanıcı adı & şifresinin doğru girilmesinden sonra geri dönüyor. Bir kullanıcı bir gönderiyi tweet atmaya çalışırken http://techcrunch.com'un yaptığı gibi.

Bazı sitelerde, yeniden yönlendirme kullanıcısı tarafından bağlanamadığımızı, ancak bunun yerine kullanıcı kimlik bilgilerini girmesi için bir açılır pencere açtığımızı hatırlıyorum. Kimlik doğrulama tamamlandıktan sonra, pop-up kapanır, ana sayfa yeni içerikle yenilenir.

Bu, javascript ile çok basit bir görev olabilir, ancak yine de anlayamıyorum. Bir açılır pencerede kimlik doğrulama URL'sini açabilirim, ancak sonuç sayfasının nasıl alınacağı & ana sayfayı nasıl güncelleyebilir? Eğer bir pop-up window.open() kullanarak kimlik doğrulama url açıyoruz varsayarsak

cevap

43

, sen kullanarak üst pencere erişebilirsiniz: (pop-up)

window.opener 

ve yenideniçin ana penceresini kullanın:

window.opener.location.reload(); 

Bu kod

Eğer oauth yetki başarısı geri arama url olarak kurdum url servis edilmelidir. Genelde

, akış olmalıdır:

  • başarılı yetki twitter sonra
  • (örneğin twitter.com üzerindeki) bir yetki sayfada bir pencere açmak size verdiği URL'ye (yönlendirir o açıcı penceresi window.opener.location.reload() yoluyla (yeniden alır
  • aynı pop-up))
  • istediğiniz edilir javascript kullanarak (pop-up kendisi kapatın)
açıldı alır
+0

Bunu yapmak için popup penceresine javascript koydum mu demek istediniz? –

+6

Yep, açılır sayfada, oauth yetkisinin başarılı bir geri dönüşü olan bir sayfada. Bu nedenle akış: bir yetkilendirme sayfası (örneğin, twitter.com'da) ile bir pop-up açtığınızda, başarılı bir şekilde yetkilendirme twitter kullanıcı tarafından verilen URL'ye yönlendirir (aynı açılır pencerede açılır), Geri arama sayfası, cevabımdan javascript koydunuz, * açacağı * penceresi yeniden yüklenir ve javascript kullanarak pop-up'ı da kapatabilirsiniz. – WTK

+0

Ben rightaway –

İlgili konular