secret google auth python oauth google-api google-api-client

python - secret - Usando Google OAuth en localhost



google auth api (3)

Para que quede claro, puede utilizar el flujo de aplicaciones web con localhost mientras desarrolla OAuth 1.0 o OAuth 2.0. OAuth 2.0 debería ser preferido, ya que es el mecanismo en el que estamos enfocados. La experiencia del usuario para OAuth 2.0 será sustancialmente mejor.

No hay nada que le impida utilizar localhost como su URL de devolución de llamada. Yo hago esto todo el tiempo. Solo debe asegurarse de que la URL de devolución de llamada coincida exactamente, incluidos los números de puerto, y no puede implementar su aplicación de esa manera por razones obvias. Las aplicaciones instaladas son más complicadas, pero si estás haciendo algo con Django, es posible aprovechar el hecho de que OAuth 2.0 es un sistema token-bearer. Mientras mantenga el token de actualización del lado del servidor, puede autenticarse con su propia aplicación fuera de banda y luego enviar el token de portador a la aplicación instalada. Su aplicación instalada tendrá aproximadamente una ventana de una hora para hacer llamadas antes de que necesite repetir el proceso. Esto puede suceder de forma transparente para el usuario en la mayoría de los casos. La transmisión del token de portador debe ocurrir sobre un canal encriptado.

Comencé a usar OAuth con Python y Django. Lo necesito para las API de Google. Estoy trabajando en localhost, por lo que no puedo registrar un dominio para url-callback. He leído que Google OAuth podría usarse con un dominio anónimo. ¿No puedo encontrar, cómo y dónde puedo hacer eso?

Editar:

Tengo esta vista:

def authentication(request): CONSUMER_KEY = ''xxxxx'' CONSUMER_SECRET = ''xxxxx'' SCOPES = [''https://docs.google.com/feeds/'', ] client = gdata.docs.client.DocsClient(source=''apiapp'') oauth_callback_url = ''http://%s/get_access_token'' % request.META.get(''HTTP_HOST'') request_token = client.GetOAuthToken( SCOPES, oauth_callback_url, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET) domain = ''127.0.0.1:8000'' return HttpResponseRedirect( request_token.generate_authorization_url(google_apps_domain=domain))

Y este error:

Lo sentimos, has llegado a una página de inicio de sesión para un dominio que no utiliza Google Apps. Por favor, compruebe la dirección web y vuelva a intentarlo.

Registrado a través de https://code.google.com/apis/console/

Editar:

CONSUMER_KEY = ''xxxxxxxxxxxxxxxxxxxxxxxxxxx'' CONSUMER_SECRET = ''xxxxxxxxxxxxxxxxxxxxxxxxx'' SCOPES = [''https://docs.google.com/feeds/'', ] DOMAIN = ''localhost:8000'' def authentication(request): client = gdata.docs.client.DocsClient(source=''apiapp'') oauth_callback_url = ''http://%s/get_access_token'' % DOMAIN request_token = client.GetOAuthToken(SCOPES, oauth_callback_url, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET) return HttpResponseRedirect( request_token.generate_authorization_url()) def verify(request): client = gdata.docs.client.DocsClient(source=''apiapp'') f = open(''/home/i159/.ssh/id_rsa'') RSA_KEY = f.read() f.close() oauth_callback_url = ''http://%s/get_access_token'' % DOMAIN request_token = client.GetOAuthToken(SCOPES, oauth_callback_url, CONSUMER_KEY, rsa_private_key=RSA_KEY) return HttpResponseRedirect( request_token.generate_authorization_url(google_apps_domain=DOMAIN))

El error:

No se puede obtener el token de solicitud OAuth: 400, el consumidor no tiene un certificado: xxxxxxxxxxxxxxx.apps.googleusercontent.com


Prueba tu código sin argumentos:

return HttpResponseRedirect(request_token.generate_authorization_url())