2013-05-07 19 views
7

Il parametro di stato in base ai documenti di Google OAuth 2.0:Google OAuth 2 e parametro di stato valori devono essere registrati nel reindirizzamento URL

Indicates any state which may be useful to your application upon receipt of the response. The Google Authorization Server roundtrips this parameter, so your application receives the same value it sent. Possible uses include redirecting the user to the correct resource in your site, nonces, and cross-site-request-forgery mitigations.

mi piacerebbe utilizzare il parametro di stato come un mezzo per sapere quali sottodominio da cui è stata avviata la richiesta originale di oauth. Tuttavia, sembra che il parametro redirect_state sia registrato come parte di uno degli "URI di reindirizzamento autorizzati". In caso contrario, ottengo:

Error: redirect_uri_mismatch The redirect URI in the request: http://my_server.com/complete/google-oauth2/?redirect_state=2 did not match a registered redirect URI

vorrei una soluzione che non richiede la registrazione ogni possibile valore redirect_state nelle URI reindirizzamento autorizzate come che non è molto gestibile. Idee?

+0

Vedere la mia risposta su http://stackoverflow.com/questions/7722062/google-oauth2-redirect-uri-with-several-parameters/26014587#26014587 Grazie! – Kiran

risposta

14

Il nome del parametro è state (e non redirect_state)!

Una richiesta campione OAuth secondo le documentazioni Google è ->

https://accounts.google.com/o/oauth2/auth? 
scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile& 
state=%2Fprofile& 
redirect_uri=https%3A%2F%2Foauth2-login-demo.appspot.com%2Fcode& 
response_type=code& 
client_id=812741506391.apps.googleusercontent.com&approval_prompt=force 

Si prega di notare il parametro State e il parametro redirect_uri. Penso che tu abbia mescolato i due.

MODIFICA - Vedere questo link da Google. Ha una buona spiegazione sui parametri di stato e sulla costruzione delle richieste web.

+5

Ah avevi ragione. Probabilmente avrebbe dovuto andare a dormire prima invece! Grazie – Henry