簡體   English   中英

launchWebAuthFlow回調未運行,Chrome擴展程序窗口立即關閉?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM