google example google-app-engine python-2.7 oauth-2.0 google-oauth python-decorators

google-app-engine - google api python example



Cómo omitir la pantalla de inicio de sesión local con Oauth2 y GAE (1)

El decorador oauth2 se basa en tener un usuario appengine-logged-in para funcionar (usa el ID de usuario para almacenar las credenciales de oauth2), por lo que sin escribir su propio código, no es posible evitar que aparezca la pantalla - en producción , el inicio de sesión se recordará por hasta 30 días.

Estoy trabajando con el decorador Oauth2 provisto por Google. En este momento estoy tratando de hacer un inicio de sesión muy simple a través de Oauth2 a Google usando GAE. Estoy ejecutando localmente para fines de prueba y he tenido éxito en la autenticación con Google; sin embargo, antes de la pantalla de Google para la autenticación, siempre me presenta una pantalla de inicio de sesión local en localhost (// localhost: 14080 / _ah / login? continue = http% 3A // localhost% 3A14080 /). No estoy seguro de por qué estoy recibiendo esta pantalla de inicio de sesión local que no parece tener ninguna relación con la pantalla de inicio de sesión de Google que viene después. Me pregunto cómo evitar esta pantalla de inicio de sesión local. Código muy simple para propósitos de prueba:

import webapp2 import jinja2 from apiclient.discovery import build from google.appengine.api import users from oauth2client.appengine import OAuth2Decorator template_dir = os.path.join(os.path.dirname(__file__), "templates") jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir)) decorator = OAuth2Decorator( client_id=''the id given by google'', client_secret=''the secret given by google'', scope=''https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email'') class Handler(webapp2.RequestHandler): def write(self, *a, **kw): self.response.out.write(*a, **kw) def render_str(self, template, **params): t = jinja_env.get_template(template) return t.render(params) def render(self, template, **kw): self.write(self.render_str(template,**kw)) class MainHandler(Handler): @decorator.oauth_required def get(self): service = build(''oauth2'', ''v2'', http=decorator.http()) request = service.userinfo().get().execute() self.write(request["email"]) app = webapp2.WSGIApplication([ (''/'', MainHandler), (decorator.callback_path, decorator.callback_handler()) ], debug=True)