2012-03-20 8 views
7

Sto sviluppando un'applicazione PhoneGap e richiede ai miei utenti di accedere tramite Google con OAuth2. È possibile direttamente tramite JavaScript? Non ho quasi nessuna esperienza con JavaScript (e jQuery).PhoneGap e OAuth2

Quali sono le opzioni? Ho pensato a un'alternativa ingombrante che implica l'inserimento del nome utente/password per un'applicazione che ho ospitato su un server che si occupa quindi dell'accesso. Quindi l'app PhoneGap dovrà chiedere al server se l'autenticazione ha avuto successo. Tuttavia, speravo che ci sarebbe stato un modo più semplice.

Qual è il modo migliore di accedere tramite Google su un'app PhoneGap?

+0

tutorial di Libby su questo argomento è probabilmente il posto migliore per iniziare: http://www.mobiledevelopersolutions.com/home/start/twominutetutorials/tmt5p1 –

risposta

8

Sono riuscito a farlo funzionare! Sto postando i miei pensieri qui perché ho avuto difficoltà a trovare la risposta dopo ore di ricerche sul web.

I passi importanti sono:

  • Assicurarsi ChildBrowser funzioni correttamente
  • Imposta una funzione che ascoltare pagina cambia window.plugins.childBrowser.onLocationChange = function(fooUrl) { console.log(fooUrl); }
  • costruire l'URL con la stringa di query come descritto nella this tutorial
  • Punto ChildBrowser all'URL
  • Quando l'utente esegue il login, sarà possibile t o estrarre il token di sessione da fooUrl

Se ancora non si sa come fare questo, dare un'occhiata al this Android app. (c'è un sacco di codice, e potrebbe sembrare eccessivo, quindi suggerisco solo andando per questo come ultima risorsa)

4

Google non consente di eseguire l'autenticazione diretta gestendo direttamente le credenziali dell'utente. Invece Google vuole che tu esegua un protocollo di autenticazione, in genere OAuth 2.0. Altri protocolli di autenticazione conosciuti che potresti sentire sono OpenID 1.0, 2.0, OpenID Connect, SAML 2.0, ID-FF, ecc. Questi protocolli reindirizzano l'utente al provider di identità (Google, in questo caso) e ti rimandano con un asserzione che puoi usare per fidarti dell'utente. Con le API, come Google, utilizzerai la funzionalità di autorizzazione di OAuth, che ti fornisce un token che puoi utilizzare con tutte le API di Google dopo l'autenticazione.

Con PhoneGap e applicazioni mobili, le cose sono un po 'diversa rispetto alla configurazione tipica OAuth.

Nel tuo caso, il del browser è in un ambiente controllato, la vostra applicazione, e si può

  • selezionare per reindirizzare l'utente a Google l'autorizzazione endpoint utilizzando la vista principale,
  • selezionare per aprire a ChildBrowser con l'endpoint di autorizzazione di Google, per non perdere nessuno stato sulla tua app.
  • per aprire in qualche modo Safari o un altro browser con l'endpoint di autorizzazione e registrare un gestore di schemi personalizzato, per reindirizzare l'utente alla tua app dopo l'autenticazione.

Questi esempi sono vagamente menzionati nelle specifiche OAuth 2.0, ma non ci sono aiuti in ciò che è il migliore o ottimale in un caso d'uso specifico. Spesso la migliore opzione possibile non è perfetta (dal punto di vista dell'utente).

Recentemente ho scritto un tutorial su come farlo funzionare con PhoneGap e ChildBrowser per iOS.