2015-02-23 8 views
8

Ho un'estensione di Chrome che richiede a un utente di accedere utilizzando la rotta chrome.identity.getAuthToken. Funziona bene, ma quando accedi devi solo utilizzare gli utenti con cui hai account in Chrome.Accedi all'estensione Chrome con un utente Google diverso da quello utilizzato da Chrome

Il client vorrebbe poter accedere con un altro account Google; quindi piuttosto che usare [email protected], che è l'account a cui Chrome ha effettuato l'accesso, desidera poter accedere utilizzando [email protected], che è anche un account Google valido.

È possibile accedere a Chrome con un account e Gmail con un secondo account e non ho la possibilità di scegliere nell'estensione.

È possibile?

risposta

12

Invece di autenticare l'utente utilizzando chrome.identity.getAuthToken, implementare la parte OAuth da soli.

Puoi utilizzare le librerie per aiutarti, ma l'ultima volta che ho provato la libreria più utile (il client API di Google) non funzionerà su un'estensione di Chrome.

Per ulteriori informazioni, consultare la documentazione Google OpenID Connect. Alla fine tutto ciò che devi fare è reindirizzare l'utente all'URL OAuth, usare la tua estensione per ottenere la risposta di Google (il codice di autorizzazione) e quindi convertire il codice di autorizzazione in un token di accesso (è una semplice chiamata POST).

Poiché per un'estensione di Chrome non è possibile reindirizzare a un server Web, è possibile utilizzare l'URI di reindirizzamento installed app: urn:ietf:wg:oauth:2.0:oob. Con questo Google mostrerà una pagina contenente il codice di autorizzazione.

Basta usare l'estensione per inserire del codice javascript in questa pagina per ottenere il codice di autorizzazione, chiudere la pagina HTML, eseguire la chiamata POST per ottenere l'email dell'utente.

+0

Ottima risposta. Questo è molto vicino a come abbiamo finito per farlo. Magari avessimo saputo dell'URI di reindirizzamento delle app installato però. Il percorso che abbiamo intrapreso era indirizzare alla pagina di approvazione di OAuth, che indirizzava a una pagina su uno dei nostri server informando l'utente del successo o del motivo del fallimento. Un po 'tortuoso, ma funziona e il cliente è felice. – boodle

+1

Questa tecnica funziona se hai solo bisogno della e-mail/nome dell'utente. Se è necessario connettersi con l'API di licenza del Chrome Webstore, è necessario creare una "app chrome" nella console degli sviluppatori che funzionerà solo con chrome.identity.getAuthToken –

+1

Puoi spiegare questa parte: "Usa la tua estensione per iniettare un po 'di codice javascript in questa pagina per ottenere il codice di autorizzazione, chiudere la pagina HTML, eseguire la chiamata POST per ottenere l'email dell'utente. "? Non sono sicuro di come collegarmi alla pagina di autorizzazione dopo che l'utente ha completato il flusso. – Cory

Problemi correlati