2013-01-22 10 views
11

Sto sviluppando un'applicazione in cui gli utenti hanno i propri URL, e hanno bisogno di utilizzare Google API - ovviamente con differenti URI reindirizzamento, comeCome gestire quantità arbitrarie di URI di reindirizzamento?

  • www.example.com/johndoe/google/login
  • www.example.com/foobar/google/login

Quindi un primo momento ho pensato che avrei potuto semplicemente risolvere questo problema utilizzando i caratteri jolly (www.example.com/*/google/login), ma purtroppo doesn lavorare in questo modo Poi ho iniziato a codificare un semplice proxy in Perl, ma non sono sicuro che funzionerebbe e avremmo finito il tempo. Qual è il modo migliore per affrontare la situazione? Ho pensato di aggiungere un nuovo URI di reindirizzamento alla console dal gestore di registrazione, ma non ho trovato alcun modo in cui il server potesse farlo.

+0

Vedi risposta su http://stackoverflow.com/questions/7722062/google-oauth2-redirect-uri-with-several-parameters Grazie! – Kiran

risposta

14

I caratteri jolly non sono supportati negli URI di reindirizzamento OAuth2 di Google. Penso che la cosa migliore da fare sia usare un singolo URI di reindirizzamento e passare le informazioni dell'utente nel parametro di stato. Il parametro di stato ti viene restituito in risposta. Quindi, quando ricevi il codice/i token di autorizzazione, puoi cercare il parametro di stato e gestire la risposta in modo appropriato (ad esempio, reindirizzare ai tuoi URL specifici dell'utente).

This answer ha ulteriori informazioni.

+1

hmm e come gestisco la risposta? Non sembra essere un parametro "stato" lì. O posso usare qualsiasi URI di reindirizzamento dopo aver ricevuto il codice? Che ne dici di chiamare una vera API? Se ho un token di accesso, posso usarlo da qualsiasi luogo o quali sono i limiti? – r1pp3rj4ck

+2

Si passa al parametro state quando si prepara la richiesta. Ad esempio, potresti includere il nome utente lì. Dopo aver ricevuto il codice di autorizzazione e averlo scambiato con token di accesso/aggiornamento, si avrà un token di accesso valido insieme a un parametro di stato popolato con il nome utente. Cosa fare con esso dipende dalla tua applicazione. Una delle principali limitazioni del token di accesso è che è di breve durata (puoi controllare il parametro expires_in nella risposta, penso che siano 3600 secondi). Pertanto, sarà necessario scambiare periodicamente il token di aggiornamento a lunga vita per un token di accesso. – vlatko

+0

Grazie! In realtà, ho risolto il problema prima che tu rispondessi al mio commento, ma chiarisce ancora alcune cose. – r1pp3rj4ck

Problemi correlati