Rietveld和upload.py oauth2流似乎破了

时间:2015-07-31 17:33:11

标签: python google-app-engine oauth

使用Rietveld的upload.py脚本和oauth2流程时遇到了一些麻烦。它将生成差异,提示访问令牌(使用--no_oauth2_webbrowser时),然后在POST到/ upload时失败。它正在正确发送Authorization: Oauth XXXXXXXX标头,但Rietveld实例每次返回302,代码注释表明实际上是Google让您知道身份验证失败的方式。重试三次后,upload.py抛出此堆栈跟踪:

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作为GAE项目运行,通过使用SSL的Google Apps帐户使用自定义域。我已为GAE项目生成了Oauth2凭据,并按照Rietveld wiki中的指定安装了它们。当我访问/get-access-token时,Rietveld实例将正确生成访问令牌。我不是代理人。登录仅限于我的Google Apps域的成员。我已将login: required配置行添加到app.yaml路由下的/*。我可以通过门户网站成功登录Rietveld实例。我还可以使用upload.py和即将弃用的ClientAuth(密码)流成功上传补丁集。我用python 2.7.6和2.7.10尝试过。使用自定义域时存在2.7.6的SSL / SNI问题,但这是一个红色的鲱鱼。

作为一项实验,我还尝试使用默认appspot.com地址托管的个人Google帐户中的项目。我遇到了同样的问题。

我的研究让我无处可去;在我进入Rietveld来源之前,我在这里发帖。有没有人还有其他我应该检查的东西?我是GAE的新手。如果没有其他人看到这一点,那可能是配置,但我最终想知道它可能在哪里/它可能是什么。

1 个答案:

答案 0 :(得分:0)

嗯,这不是一个理想的情况,但我的解决方案是在Scene.initialize()内为上传相关路线添加明确的网址,并将其从app.yaml中免除。然后,我在Rietveld核心中修改相应的视图函数,并用login: required修饰它们。最初我假设YAML设置只是为了方便。但是,为了尝试找出重定向实际生成的方式,请注入一些登录信息,这表明情况并非如此。我不知道为什么@login_required app.yaml指令似乎并不关心OAuth令牌;也许有人可以帮助我理解或指出我更好的解决方案。