javascript - top - window location replace href



如何通過打開新窗口來執行OAuth請求,而不是從當前頁面重定向用戶? (1)

我已經使用Twitter和Facebook進行了OAuth身份驗證。 目前,對於每個站點,我的服務器將用戶重定向到指定的URL(例如,使用Twitter的http://api.twitter.com/oauth/authorize ),然後通過回調URL接收身份驗證參數。

但通過這種方式,用戶被重定向到我的頁面(到Facebook或Twitter),並且只有在輸入正確的用戶名和密碼後才會返回。 這就像http://techcrunch.com在用戶嘗試推文發佈時的方式。

我記得在某個網站上,我看到我們可以不通過重定向用戶連接,而是打開一個彈出窗口供用戶輸入憑據。 認證為completde後,彈出窗口關閉,主頁面刷新新內容。

這可能是一個非常簡單的javascript任務,但我仍然無法弄明白。 我可以在彈出窗口中打開身份驗證URL,但是如何獲取結果並更新主頁?


假設您使用window.open()在彈出窗口中打開身份驗證URL,您可以使用以下命令訪問父窗口:

window.opener

重新加載父窗口(從彈出窗口)使用:

window.opener.location.reload();

此代碼應該在您已設置為oauth授權的成功回調網址的網址上提供。

一般來說,流程應該是:

  • 打開帶有授權頁面的彈出窗口(例如在twitter.com上)
  • 成功授權後,twitter會將用戶重定向到您提供的URL(它會在同一個彈出窗口中打開)
  • 重新加載開啟窗口(通過window.opener.location.reload()
  • 關閉彈出窗口本身(使用javascript是你想要的)




popup