2017-11-11 5 views
0

私はchrome.identity.launchWebAuthFlowを使用して、Doorkeeper gemを使用してOAuth2プロバイダとして設定されている私のRailsアプリケーションから認証コードを取得しています(物事のDoorkeeper側が機能しています)。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 

    } 

そして、私のサーバは要求を受信した302で

https://<my_chrome_extension_name>.chromiumapp.org/oauth2?code=<access_code_generated_by_oauth> 

にリダイレクトします。

ただし、Chrome拡張機能はすぐに終了し、launchWebAuthFlowのコールバック機能は実行されません。コールバックでalert()を呼び出す(実行されない)ため、実行していないことが分かっています。また、アクセストークンをサーバーに要求します(サーバーは要求を受け取りません)。

launchWebAuthFlowウィンドウがサーバーの認証フローのWebビューであるため、launchWebAuthFlowが呼び出されたときにクロム拡張が正しく終了している可能性があります。 )

launchWebAuthFlowのデフォルトの動作は、ドキュメントに従ってウィンドウを閉じることですが、コールバックはまだ実行されていません。

コールバック関数を実行してクロム拡張ウィンドウが閉じないようにするにはどうすればよいですか?

答えて

0

私はlaunchWebAuthFlowを非バックグラウンドスクリプトで実行していました。私は認証ロジックをバックグラウンドスクリプトに移しました。

1

私もほとんど同じ問題を経験していました。私はpopup.htmlからwebauthflowを起動しようとしていましたが、認証フローが開始されるとpopup.htmlが閉じられ、トークンが正常に返されたときに実行されるコードは中止されます。

代わりにoptions.htmlで認証を行うことをお勧めします。 (https://developer.chrome.com/extensions/optionsV2) これは、認証フローが開いた後でも開いたままのポップアップモーダルを起動します(フォーカスが失われたときにpopup.htmlが閉じるのではなく、残りのコードが実行されることを意味します)。

これが役に立ちます。

関連する問題