我正在使用chrome.identity.launchWebAuthFlow從我的Rails應用程序中檢索身份驗證代碼,該應用程序使用Doorkeeper gem(東西的門衛端正在工作)設置爲OAuth2提供程序。launchWebAuthFlow回調不會運行,Chrome擴展窗口立即關閉?
所以我送然後要求到我的服務器從Chrome擴展這個方法:
requestGrant: function(){
chrome.identity.launchWebAuthFlow(
{
'url': authService.grantEndPoint(),
'interactive': true
}, function(redirect_url){
/* Extract auth code from redirect_url */
var code = authService.extractCode(redirect_url);
alert(code);
authService.getAccessToken(code);
}); //launchWebAuthFlow ends here
}
而我的服務器收到請求並重定向到
https://<my_chrome_extension_name>.chromiumapp.org/oauth2?code=<access_code_generated_by_oauth>
與發現302。
但是,Chrome擴展會立即關閉,並且launchWebAuthFlow的回調函數不會運行。我知道它沒有運行,因爲我在回調中調用了alert()(不運行),並向我的服務器發送了另一個訪問令牌請求(服務器沒有收到請求)。
我認爲問題的一部分是,當調用launchWebAuthFlow時,Chrome擴展可能會關閉,因爲啓動WebAuthFlow的窗口是服務器授權流的Web視圖,並且擴展關閉(或僅僅是認證流程通過擴展名顯示?)
由於某種原因launchWebAuthFlow的默認行爲是根據文檔關閉窗口,但回調仍然沒有運行。
我怎樣才能讓回調函數運行,並防止鉻擴展窗口關閉?