google app engine - with - Comment contourner l'écran de connexion local avec Oauth2 et GAE



use google authentication (1)

Le décorateur oauth2 se fie à un utilisateur appengine-connecté pour fonctionner (il utilise l'ID utilisateur pour stocker les informations d'identification oauth2), donc sans écrire votre propre code, il n'est pas possible d'éviter que l'écran apparaisse - en production , l'identifiant sera mémorisé jusqu'à 30 jours.

Je travaille avec le décorateur Oauth2 fourni par Google. En ce moment j'essaie juste de faire une connexion très simple via Oauth2 à Google en utilisant GAE. Je cours localement pour des tests et j'ai réussi à m'authentifier avec Google; Cependant, avant l'authentification de l'écran de Google, il me présente toujours un écran de connexion local qui s'exécute sur localhost (// localhost: 14080 / _ah / login? continue = http% 3A // localhost% 3A14080 /). Je ne suis pas sûr pourquoi je reçois cet écran de connexion local qui ne semble pas avoir d'incidence sur l'écran de connexion Google qui vient après. Je me demande comment éviter cet écran de connexion local? Code très simple à des fins de test:

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)