2

Ich verwende chrome.identity.launchWebAuthFlow(), um einen Benutzer über OAuth2 einer Nicht-Google-API zu leiten, wenn er meine Erweiterung verwendet.Öffnen Sie chrome.identity.launchWebAuthFlow als Registerkarte (Chrome-Erweiterungen)

Obwohl Authentifizierung funktioniert und ich das Authentifizierungstoken des Benutzers effektiv erhalten kann, mag ich nicht, dass es vollständig in einem neuen Fenster öffnet, das die UIs des Browsers und eine URL-Leiste nicht enthält.

Im Idealfall könnte ich diesen OAuth-Tanz im Popup-Fenster der Erweiterung ausführen. Wenn dies nicht funktioniert, kann dieses OAuth-Ereignis auf einer separaten Registerkarte ausgeführt werden.

Im Moment wird der Benutzer auf die Erweiterung klicken, um das Popup zu öffnen. Im Popup befindet sich eine Schaltfläche, auf die sie klicken, um OAuth zu aktivieren. Von hier aus erscheint ein ganz anderes Fenster, aber ich möchte, dass es im Popup bleibt (siehe oben).

Wie kann ich das erreichen? Ich habe viel darüber geredet, aber keine Lösung dafür.

Danke!

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> 

Antwort

0

Sie werden nicht in der Lage sein, den OAuth Fluss zu bekommen in einem Pop-Up arbeiten, aber es ist ein full walkthrough der sich mit Browser-Tabs fließen zu steuern.

+0

Diese Walkthrough ist leider für OAuth1 und veraltet. – user2494584

+0

Die Handhabung von Tabs wird gleich sein. Ersetzen Sie einfach den OAuth 1-Code durch den OAuth 2-Code. – abraham