2012-07-12 16 views
7

Google ha un esempio di un client OAuth2 hereGoogle OAuth2 della riga di comando esempio

Sono completelly nuovo a OAuth2 e mi piacerebbe ottenere questo esempio di lavoro prima di passare ad integrare OAuth2 con la mia domanda. Quello che ho fatto è la seguente:

  1. registrare un'applicazione di test
  2. ottenere l'ID client e client Segreto
  3. Configura quei valori in client_secrets.json
  4. eseguire l'applicazione di test: python moderator.py

L'applicazione apre un browser, dove posso (come utente) autorizzare l'applicazione ad accedere al mio account. Ma Google si lamenta come questo (400 Bad Request):

Error: redirect_uri_mismatch 
The redirect URI in the request: http://localhost:8080/ did not match a registered redirect URI 
Learn more 
Request Details 
from_login=1 
scope=https://www.googleapis.com/auth/moderator 
response_type=code 
access_type=offline 
redirect_uri=http://localhost:8080/ 
approval_prompt=auto 
as=-xxxxxxxxxxxxx 
pli=1 
client_id=xxxxxxxxxxx.apps.googleusercontent.com 
authuser=0 
hl=en 

Credo che la localhost: 8080 proviene da un server Web interno iniziata da moderator.py. La mia domanda è: qualcuno ha fatto questo esempio per funzionare? Quali altri componenti ho bisogno (configurazione Apache, DNS, ...)

Sono molto confuso con OAuth2 e qualsiasi aiuto sarebbe molto apprezzato.

risposta

0

In OAuth 2.0, il parametro redirect_uri è in genere registrato con il provider. Il provider dovrebbe anche applicare il redirect_uri https-only.

È necessario registrare il redirect_uri con Google qui: https://code.google.com/apis/console/?pli=1#access

+3

ho già registrato il mio applicazione di test nella console API di Google, ma sto in esecuzione l'applicazione dalla riga di comando (si chiama "linea di comando esempio"). Non ho alcun URI a cui posso reindirizzare. Dove o come ho bisogno di eseguire questo esempio per consentire all'utente di autorizzare la mia applicazione ad accedere ai dati dell'utente. Questo è solo un semplice esempio per capire come funziona OAuth2, ma non riesco a farlo funzionare. – dangonfast

2

Prima di tutto, mi dispiace se la mia risposta non è molto preciso, perché sono anche molto nuovo a OAuth (e anche python) ... e mi dispiace anche se è arrivato troppo tardi, di solito non accedo qui.

Hai provato a usare questo (ha lavorato per me): REDIRECT_URI = 'urn: ietf: wg: OAuth: 2.0: OOB'

Controllare questo: https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi

Here Ho un pezzo di codice con un flusso di OAuth completo funzionante.

+0

Questa è la risposta corretta per le app della console –

0

Forse prova a registrare il tuo IP esterno con Google (potrebbe essere necessario un certo porting fowarding sul tuo router)? Se fallisce, potresti usare il SimpleServer di Python, registrare il tuo IP e ottenere questo server per gestire il reindirizzamento.

0

tuo redirect_uri è impostato su 'http://localhost:8080/', perché si passa un valore predefinito (non so come descriverlo) bandiere parametro run_flow (flusso, stoccaggio, bandiere)

se si guarda alla definizione per run_flow() funziona troverete questo:

It presumes it is run from a command-line application and supports the 
following flags: 

    ``--auth_host_name`` (string, default: ``localhost``) 
     Host name to use when running a local web server to handle 
     redirects during OAuth authorization. 

    ``--auth_host_port`` (integer, default: ``[8080, 8090]``) 
     Port to use when running a local web server to handle redirects 
     during OAuth authorization. Repeat this option to specify a list 
     of values. 

    ``--[no]auth_local_webserver`` (boolean, default: ``True``) 
     Run a local web server to handle redirects during OAuth 
     authorization. 
Problemi correlati