2014-09-28 11 views
7

Ich benutze chrome.identity, um sich bei einem Drittanbieter-Anbieter in einer Chrome-Erweiterung anzumelden. Es funktioniert gut für die Anmeldung, wenn ich launchWebAuthFlow benutze Ich bin mit dem Third-Party-Login-Bildschirm dargestellt und nach der Anmeldung zurück zu meiner Anwendung umgeleitet.Wie logge ich mich von einem chrome.identity oauth provider ab

Ich kann jedoch keine Möglichkeit finden, die Abmeldefunktion in meiner Erweiterung zu aktivieren. Es scheint keine Funktion zum Löschen der zwischengespeicherten angemeldeten Identität zu geben. Wenn launchWebAuthFlow das nächste Mal aufgerufen wird, meldet es mich automatisch als ersten Benutzer an und fordert mich nicht zur erneuten Anmeldung auf.

Gibt es eine Möglichkeit, den eingeloggten Zustand des chrome.identity-Plugins zu löschen?

+0

Können Sie angeben, über welchen Anbieter Sie sprechen (falls zutreffend)? – Xan

+0

Der Anbieter ist [unappapp] (https://untappd.com/api/docs), aber meine Frage ist mehr über die [chrome.identity] (https://developer.chrome.com/apps/identity) API. – infomofo

Antwort

12

Ich bin nicht über den spezifischen Drittanbieter bekannt. Aber ich hatte ein ähnliches Problem, wenn ich Google Oauth mit chrome.identity.launchWebAuthFlow() verwendete. Ich nahm an der Benutzer anmelden kann, aber nicht sich abzumelden removeCachedAuthToken mit()

In diesem Fall den Benutzer abzumelden, habe ich chrome.identity.launchWebAuthFlow() mit den Google-Logout-URL anstatt es oauth URL

ist
chrome.identity.launchWebAuthFlow(
    { 'url': 'https://accounts.google.com/logout' }, 
    function(tokenUrl) { 
     responseCallback(); 
    } 
); 

Das funktionierte ziemlich gut.

+0

Danke, das hat für mich funktioniert! – infomofo

+0

Danke. Nach wochenlanger Suche hat sich das für WordPress OAuth2 gelohnt. – colbybhearn

+0

Wie kann ich das für Facebook Logout nutzen? Das funktioniert nicht für mich:/ –

0

Sie können den Identitätscache mit der Methode chrome.identity.removeCachedAuthToken(object details, function callback) löschen.
https://developer.chrome.com/apps/identity#method-removeCachedAuthToken

+5

Ich hätte in der Frage erwähnen sollen, dass ich diese Methode ausprobiert habe, aber es funktioniert nicht. Ich habe in den Chrome-Extension-Support-Foren und anderen Benutzern, die den launchWebAuthFlow-Bericht verwenden, das gleiche [Problem] (https://code.google.com/p/chromium/issues/detail?id=328876) gesucht. Die removeCachedAuthToken-Methode scheint nur zu funktionieren, wenn Sie google als oauth-Provider verwenden. Es scheint nicht mit einer dritten Partei zu arbeiten. – infomofo

0

Ich zufällig vor kurzem das gleiche Problem, und ich löste es schließlich durch Hinzufügen login_hint=<new_user> und prompt=consent in der Login-URL.

3

Sie sollten prompt=select_account zu Ihrer Authentifizierungs-URL hinzufügen. Dein Problem wird gelöst.

https://accounts.google.com/o/oauth2/auth?client_id= {clientId} & response_type = Token & scope = {Bereiche} & redirect_uri = {} redirectURL & prompt = select_account

1

Für mich ist https://accounts.google.com/logout nicht. Aber https://accounts.google.com/o/oauth2/revoke?token=TOKEN funktionieren gut, mit einfachen window.fetch(url), nicht mit hrome.identity.launchWebAuthFlow.

+0

netter Dank lass mich das versuchen! –

Verwandte Themen