![](/img/trans.png)
[英]Chrome extension: chrome.alarms not working after main window closes
[英]launchWebAuthFlow callback does not run, and the Chrome extension window closes immediately?
我正在使用chrome.identity.launchWebAuthFlow從我的Rails應用程序中檢索身份驗證代碼,該應用程序使用Doorkeeper gem設置為OAuth2提供程序(門禁端的工作正常)。
所以我通過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擴展可能正在關閉,因為窗口launchWebAuthFlow打開是服務器授權流的Web視圖,並且擴展關閉(或者是通過延期?)
出於某種原因,launchWebAuthFlow的默認行為是根據文檔關閉窗口,但回調仍然沒有運行。
如何運行回調函數,並阻止chrome擴展窗口關閉?
我也遇到了幾乎相同的問題。 我試圖從我的popup.html啟動webauthflow,但是一旦auth流程開始,popup.html將關閉,中止在成功返回令牌時執行的代碼。
我的建議是在options.html中處理身份驗證。 ( https://developer.chrome.com/extensions/optionsV2 )這將啟動一個彈出窗口模式,即使在您的身份驗證流程打開后也會保持打開狀態(與popup.html關閉時失去焦點相反),這意味着您的其余部分代碼將執行。
希望這可以幫助。
我在非后台腳本中運行launchWebAuthFlow。 我將auth邏輯移動到后台腳本,它工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.