2015-02-23 9 views
8

Ich habe eine Chrome-Erweiterung, die einen Benutzer zur Anmeldung über die chrome.identity.getAuthToken-Route auffordert. Dies funktioniert einwandfrei. Wenn Sie sich jedoch anmelden, können Sie nur die Nutzer verwenden, für die Sie in Chrome Konten haben.Anmeldung bei der Chrome-Erweiterung mit einem anderen Google-Nutzer als dem von Chrome verwendeten.

Der Kunde möchte sich mit einem anderen Google-Konto anmelden können; Anstatt also [email protected] zu verwenden, bei dem es sich um das Konto handelt, bei dem Chrome angemeldet ist, möchten sie sich mithilfe von [email protected] anmelden können. Dies ist auch ein gültiges Google-Konto.

Es ist möglich, dass ich mit einem Konto in Chrome angemeldet bin, und Google Mail mit einem zweiten Konto, und ich habe keine Möglichkeit, in der Erweiterung zu wählen.

Ist das möglich?

Antwort

12

Anstatt den Benutzer mit chrome.identity.getAuthToken zu authentifizieren, implementieren Sie einfach den OAuth-Teil selbst.

Sie können Bibliotheken verwenden, um Ihnen zu helfen, aber das letzte Mal, dass ich die hilfreichste Bibliothek (den Google API-Client) ausprobiert habe, funktioniert nicht mit einer Chrome-Erweiterung.

Weitere Informationen finden Sie in der Dokumentation Google OpenID Connect. Am Ende müssen Sie lediglich den Benutzer zur OAuth-URL umleiten, Ihre Erweiterung verwenden, um die Antwort von Google (den Autorisierungscode) zu erhalten, und dann den Autorisierungscode in ein Zugriffstoken umwandeln (es handelt sich um einen einfachen POST-Anruf).

Da für eine Chrome-Erweiterung keine Umleitung zu einem Webserver möglich ist, können Sie den Umleitungs-URI installed app verwenden: urn:ietf:wg:oauth:2.0:oob. Damit zeigt Google eine Seite mit dem Autorisierungscode an.

einfach Ihre Erweiterung verwenden einige Javascript-Code in dieser Seite zu injizieren, den Autorisierungscode zu erhalten, die HTML-Seite schließen, führen Sie die POST-Anruf des Benutzers E-Mail zu erhalten.

+0

Große Antwort. Das ist sehr ähnlich wie wir es gemacht haben. Ich wünschte, wir hätten von der installierten App-Weiterleitungs-URI aber gewusst. Der Weg, den wir eingeschlagen hatten, bestand darin, auf die OAuth-Genehmigungsseite zu verweisen, die auf eine Seite auf einem unserer Server verweist, die den Benutzer entweder über den Erfolg oder den Grund für den Fehler informiert. Ein bisschen umständlich, aber es funktioniert und der Kunde ist glücklich. – boodle

+1

Diese Technik funktioniert, wenn Sie nur die E-Mail/den Namen des Benutzers benötigen. Wenn Sie mit der Lizenzierung api von Chrom Webstore anschließen müssen, dann müssen Sie eine „Chrom app“ in Entwickler-Konsole erstellen, die nur mit chrome.identity.getAuthToken arbeiten –

+1

Können Sie diesen Teil erklären: „Verwenden Sie einfach Ihre Erweiterung einige zu injizieren JavaScript-Code auf dieser Seite, um den Autorisierungscode zu erhalten, schließen Sie die HTML-Seite, führen Sie den POST-Aufruf aus, um die E-Mail des Benutzers zu erhalten. "? Ich bin mir nicht ganz sicher, wie in die Autorisierungsseite einzuhaken, nachdem der Benutzer den Fluss abgeschlossen ist. – Cory

Verwandte Themen