2012-07-12 20 views
7

Google tiene un ejemplo de un cliente OAuth2 hereGoogle OAuth2 ejemplo de línea de comandos

Soy nuevo en completelly OAuth2 y me gustaría conseguir este ejemplo de trabajo antes de pasar a integrar OAuth2 con mi solicitud. Lo que he hecho es el siguiente:

  1. Registrar una aplicación de prueba
  2. Obtener ID de cliente y el cliente secreto
  3. Configurar los valores en client_secrets.json
  4. Ejecutar la aplicación de prueba: python moderator.py

La aplicación abre un navegador, donde puedo (como usuario) autorizar la aplicación para acceder a mi cuenta. Sin embargo, Google se queja como esta (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 

supongo que el localhost: 8080 proviene de un servidor web interno iniciado por moderator.py. Mi pregunta es: ¿Alguien ha tenido este ejemplo para trabajar? ¿Qué otros componentes necesito? (Configuración de Apache, DNS, ...)

Estoy muy confundido con OAuth2 y cualquier ayuda sería muy apreciada.

Respuesta

0

En OAuth 2.0, el parámetro redirect_uri generalmente se registra con el proveedor. El proveedor también debe aplicar https-only redirect_uri.

Debe registrarse redirect_uri con Google aquí: https://code.google.com/apis/console/?pli=1#access

+3

Ya he registrado mi aplicación de prueba en la consola API de Google, pero estoy ejecutando la aplicación desde la línea de comandos (se llama "ejemplo de línea de comando"). No tengo un URI al que pueda redireccionar. Dónde o cómo necesito ejecutar este ejemplo para que el usuario pueda autorizar a mi aplicación para acceder a los datos del usuario. Este es solo un ejemplo simple para entender cómo funciona OAuth2, pero no puedo hacerlo funcionar. – dangonfast

2

En primer lugar, lo siento si mi respuesta no es muy preciso, porque yo también soy muy nuevo a OAuth (e incluso pitón) ... y también lo siento si llegó demasiado tarde, generalmente no accedo aquí.

¿Ha intentado utilizar este (trabajó para mí): redirect_uri = 'urn: IETF: WG: oauth: 2.0: OOB'

Comprobar esto: https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi

Here tengo una pieza de código con un flujo de OAuth completo funcionando.

+0

Esta es la respuesta correcta para aplicaciones de consola –

0

¿Quizás intente registrar su IP externa con Google (puede requerir algunos puertos en su enrutador)? Si esto falla, tal vez podría usar el SimpleServer de Python, registrar su IP y obtener este servidor para manejar la redirección.

0

Su redirect_uri se establece en 'http://localhost:8080/' porque se pasa un defecto (no sé cómo describirlo) banderas parámetro para run_flow (flujo, almacenamiento, banderas)

si nos fijamos en la definición de Función run_flow() encontrará esto:

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. 
Cuestiones relacionadas