2

Google以外のAPIのOAuth2を使用して自分の内線を使用するときに、chrome.identity.launchWebAuthFlow()を使用してユーザーを誘導しています。タブとしてchrome.identity.launchWebAuthFlowを開きます(Chrome拡張機能)

認証が機能しても、ユーザーの認証トークンを効果的に取得できますが、ブラウザのUIとURLバーがない新しいウィンドウで完全に開くことは嫌です。

理想的には、私は拡張機能のポップアップウィンドウ内でこのOAuthダンスを行うことができます。それでも問題が解決しない場合は、別のタブでこのOAuthイベントを少なくとも発生させることができます。

今すぐユーザーが拡張機能をクリックすると、ポップアップが開きます。ポップアップには、OAuthを有効にするためにクリックするボタンがあります。ここから、他のウィンドウ全体がポップアップしますが、代わりにポップアップ(上記を参照)内にとどまりたいと思います。

どうすればいいですか?私はそれについて多くの話をしましたが、解決策はありません。

ありがとうございます!

manifest.jsonを

{ 
    "manifest_version": 2, 
    "name": "Extension", 
    "version": "0.0.1", 
    "permissions": [ 
     "identity", 
     "tabs", 
     "http://*/*", 
     "https://*/*" 
    ], 
    "browser_action":{ 
     "default_icon": "icon.png", 
     "default_popup" : "popup.html" 
    }, 

    "background": { 
     "scripts": ["background.js"] 
    } 
} 

background.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse){ 
     if(request.message==="start_oauth"){ 
      chrome.identity.launchWebAuthFlow(
       { 
        "url" : "https://example.com/manage/oauth2/authorize?callback_uri=" 
        +encodeURIComponent(<callback_uri>) 
        +"&client_id=" + <client_id> 
        +"&response_type=code", 
       "interactive" : true 
       }, 
       function(redirect_url){ 
        var auth_token = redirect_url.substr(<callback_uri>.length+6); 
       } 
      ); 
     } 
    } 
); 

popup.js

function startOAuth(){ 
    chrome.runtime.sendMessage({"message": "start_oauth"}); 
} 
document.getElementById("login").addEventListener("click", startOAuth); 

popup.html

<html> 
    <body> 
     <button id="login"> Click here to log in</button> 
    </body> 
    <script src="popup.js"></script> 
</html> 

答えて

0

あなたがポップアップで働いてOAuthのフローを取得することができなくなりますが、ブラウザのタブで流れを自分で制御するfull walkthroughがあります。

+0

このウォークスルーは、残念ながらOAuth1と古いバージョンでは残念です。 – user2494584

+0

タブの操作は同じになります。 OAuth 1のコードをOAuth 2のコードに置き換えてください。 – abraham

関連する問題