2 votes

État de demande invalide : oauth2 flask

Je suis en train d'utiliser le code suivant pour l'authentification en utilisant oauth 2.0

oauth2.init_app(
    app,
    scopes=['email', 'profile'],
    authorize_callback=_request_user_info)

La route est la suivante

@app.route('/')
@oauth2.required
def hello():
    """Return a friendly HTTP greeting."""
    return 'Bonjour ' + session['profile']['displayName']

La méthode de rappel d'authentification

def _request_user_info(credentials):
    """
    Effectue une requête HTTP à l'API Google+ pour récupérer les informations de profil de base de l'utilisateur, y compris son nom complet et sa photo, et les stocke dans la session Flask.
    """
    http = httplib2.Http()
    credentials.authorize(http)
    resp, content = http.request(
        'https://www.googleapis.com/plus/v1/people/me')

    if resp.status != 200:
        current_app.logger.error(
            "Erreur lors de l'obtention du profil de l'utilisateur: %s" % resp)
        return None

    session['profile'] = json.loads(content)

Je peux voir l'écran de consentement, puis après il y a trop de redirections. Les journaux montrent ce qui suit.

NFO:werkzeug:127.0.0.1 - - [10/Apr/2016 15:25:21] "GET / HTTP/1.1" 302 -
INFO:werkzeug:127.0.0.1 - - [10/Apr/2016 15:25:21] "GET /oauth2authorize?scopes=profile&scopes=email&return_url=http%3A%2F%2F127.0.0.1%3A8080%2F HTTP/1.1" 302 -
INFO:oauth2client.client:Successfully retrieved access token
INFO:werkzeug:127.0.0.1 - - [10/Apr/2016 15:25:27] "GET /oauth2callback?state=%7B%22csrf_token%22:+%22aa7d28d2496c0e0714eac20b902c1e4db21677d333a837d743525a9696d6c976%22,+%22return_url%22:+%22http://127.0.0.1:8080/%22%7D&code=4/Kz1xkENjHrTzLphfEG8CGND7tkeGXxjIffZxMwSr_hU HTTP/1.1" 302 -
INFO:werkzeug:127.0.0.1 - - [10/Apr/2016 15:25:27] "GET / HTTP/1.1" 302 -
INFO:werkzeug:127.0.0.1 - - [10/Apr/2016 15:25:27] "GET /oauth2authorize?scopes=profile&scopes=email&return_url=http%3A%2F%2F127.0.0.1%3A8080%2F HTTP/1.1" 302 -
INFO:oauth2client.client:Received token response with no refresh_token. Consider reauthenticating with approval_prompt='force'.
INFO:oauth2client.client:Successfully retrieved access token
INFO:werkzeug:127.0.0.1 - - [10/Apr/2016 15:25:28] "GET /oauth2callback?state=%7B%22csrf_token%22:+%22862efe9c1803e12c5c1323b5f68d8bbf185ba89d5d46268924ac527d3dca886c%22,+%22return_url%22:+%22http://127.0.0.1:8080/%22%7D&code=4/nU8o3y3zslgd9KVXJ_NDtzJUZfABeF6ka4IbYSiGKcs HTTP/1.1" 302 -
INFO:werkzeug:127.0.0.1 - - [10/Apr/2016 15:25:28] "GET / HTTP/1.1" 302 -

Finalement, je vois une page avec les mots. État de demande invalide

entrer la description de l'image ici

1voto

Jon Wayne Parrott Points 321

Cela peut se produire lorsque la session du cookie devient trop importante et que le nouveau jeton CSRF ne peut pas être enregistré dans la session. Pouvez-vous vérifier les tailles des cookies dans vos réponses?

Nous avons résolu une partie de ce problème avec oauth2client 2.0.2, mais si vous rencontrez toujours ce problème avec cette version, j'aimerais obtenir plus d'informations.

Nous recommandons vivement d'utiliser une session sauvegardée en base de données telle que memcache/redis au lieu des cookies.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X