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