我正在創建一個Chrome擴展程序,它將與特定的熱門網站進行交互。跨域OAuth ...如何獲得響應?
它將html注入到添加了新功能的站點中。這些功能的部分功能取決於用戶的登錄狀態,爲了獲取登錄的用戶信息,我們需要使用此網站的OAuth身份驗證API對擴展進行身份驗證。
例如,讓我們說,流行的網站(即不擁有,很明顯)是www.github.com
。
當用戶在www.github.com,我們的擴展注入一個按鈕,上面寫着「連接與GitHub的」在網站上。
點擊該按鈕後,會彈出一個對Githubs OAuth API的彈出窗口,並詢問用戶:'您是否想讓應用程序XYZ訪問您的GitHub帳戶?是/否「。
一旦他們打是的,我們的擴展進行身份驗證,現在可以使用GitHub的API來訪問像他們的用戶名和這樣的信息,並將它注入右轉入github.com網站。
所有這些都是我們希望它工作的方式,但問題是我們在當前窗口(www.github.com
)和我們自己的服務器(www.server.com
)的彈出窗口之間進行通信時遇到了很多困難。
基於OAuth的認證成功回調恰好在彈出,返回的道理,我們無法溝通回主頁,因爲「協議,域和端口的不匹配。
什麼是捕獲從彈出的OAuth成功窗口內該令牌,這樣我們就可以使用此標記在我們的擴展,它坐落在其他領域的最佳方法是什麼?
你看過'chrome.identity' API嗎? – Xan
之前使用的一種技術是觀察彈出地址的變化(實際使用新的標籤而不是彈出模式),並從那裏捕獲令牌(即url包含「token =」)而不是頁面內容,然後關閉窗口。我的擴展用於爲谷歌oauth做到這一點,但後來我用鉻替換它。身份 –
Firefox有類似的東西嗎?我希望能夠建立這樣的模式,以便對擴展類型不可知。 – Tallboy