2015-07-31 3 views
1

J'ai de sérieux problèmes en utilisant le script upload.py de Rietveld avec le flux oauth2. Il va générer les diffs, une invite pour le jeton d'accès (lors de l'utilisation de --no_oauth2_webbrowser), puis échouer lors de POSTing/upload. Il envoie correctement l'en-tête Authorization: Oauth XXXXXXXX, mais l'instance Rietveld renvoie 302 à chaque fois, ce que les commentaires de code indiquent est réellement la façon dont Google vous informe que l'authentification a échoué. upload.py jette cette trace de la pile après une nouvelle tentative à trois reprises:Rietveld et upload.py oauth2 flow semble cassé

Traceback (most recent call last): 
    File "../rietveld/upload.py", line 2719, in <module> 
    main() 
    File "../rietveld/upload.py", line 2711, in main 
    RealMain(sys.argv) 
    File "../rietveld/upload.py", line 2667, in RealMain 
    response_body = rpc_server.Send("/upload", body, content_type=ctype) 
    File "../rietveld/upload.py", line 464, in Send 
    f = self.opener.open(req, timeout=70) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 437, in open 
    response = meth(req, response) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 550, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 475, in error 
    return self._call_chain(*args) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 409, in _call_chain 
    result = func(*args) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 558, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 302: Found 

Rietveld est en cours d'exécution en tant que projet GAE, en utilisant un domaine personnalisé via un compte Google Apps avec le travail SSL. J'ai généré des informations d'identification Oauth2 pour le projet GAE et les ai installées comme indiqué sur le Rietveld wiki. L'instance de Rietveld génère correctement un jeton d'accès lorsque je visite le /get-access-token. Je ne suis pas derrière un proxy. La connexion est réservée aux membres de mon domaine Google Apps. J'ai ajouté la ligne de configuration login: required à app.yaml sous la route /*. Je peux me connecter avec succès à l'instance de Rietveld via le portail Web. Je peux également télécharger un ensemble de correctifs avec succès en utilisant upload.py et le flux ClientAuth (mot de passe) qui sera bientôt déconseillé. Je l'ai essayé avec python 2.7.6 et 2.7.10. Il y a un problème SSL/SNI avec 2.7.6 lors de l'utilisation du domaine personnalisé, mais c'est un problème. À titre expérimental, j'ai également essayé ceci avec un projet à partir d'un compte Google personnel hébergé à l'adresse par défaut appspot.com. J'ai rencontré le même problème là-bas.

Mes recherches ne m'ont pas donné de résultat; Je poste ici avant d'aller trop loin dans la source de Rietveld. Est-ce que quelqu'un a autre chose que je devrais vérifier? Je suis nouveau à GAE. Si personne d'autre ne voit cela, c'est probablement de la configuration, mais je suis à bout de nerfs en essayant de comprendre où et ce que ça pourrait être.

Répondre

0

Eh bien, ce n'est pas une situation idéale, mais ma solution est d'ajouter des URL explicites dans app.yaml pour les routes liées au téléchargement et de les exempter de login: required. J'ai ensuite piraté les fonctions de vue correspondantes dans le noyau de Rietveld et les ai décorées avec @login_required. Au départ, j'avais supposé que le réglage YAML était juste une commodité pour cela. Cependant, saupoudrer une connexion pour essayer de comprendre comment la redirection a été générée a indiqué que ce n'était pas le cas. Je ne sais pas pourquoi la directive app.yamllogin: required ne semble pas se préoccuper des jetons OAuth; peut-être que quelqu'un peut m'aider à comprendre ou à me diriger vers une meilleure solution.