我在使用Rietveld的upload.py脚本和oauth2流时遇到了一些严重的问题。它将生成差异,提示访问令牌(当使用--no_oauth2_webbrowser时),然后在POSTing到/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: FoundRietveld是作为GAE项目运行的,它通过运行SSL的Google帐户使用自定义域。我已经为GAE项目生成了Oauth2凭据,并按照Rietveld wiki上指定的方式安装了它们。当我访问/get-access-token时,Rietveld实例将正确地生成一个访问令牌。我不是代理的幕后黑手。登录仅限于我的Google域名的成员。我在login: required路由下向app.yaml添加了/*配置行。我可以通过web门户成功地登录到Rietveld实例。我还可以使用upload.py和即将被废弃的ClientAuth (密码)流成功地上传修补程序集。我已经尝试过python 2.7.6和2.7.10。当使用自定义域时,会出现2.7.6的SSL/SNI问题,但这是一个红鲱鱼。
作为一项实验,我还尝试了一个来自默认appspot.com地址的个人Google帐户的项目。我在那里也遇到过同样的问题。
我的研究没有给我带来任何帮助;在我深入到Rietveld源代码之前,我在这里发帖。还有什么我应该检查的吗?我对GAE还不熟悉。如果没有其他人看到这一点,这可能是配置,但我正试图找出它的位置/可能是什么。
发布于 2015-08-06 22:06:50
嗯,这不是一个理想的情况,但我的解决方案是在app.yaml中为与上传相关的路由添加显式url,并将它们排除在login: required之外。然后,我在Rietveld核心中黑出相应的视图函数,并使用@login_required对它们进行修饰。最初,我认为YAML设置只是一种方便。然而,添加一些日志记录来尝试找出重定向是如何实际生成的,这表明情况并非如此。我不知道为什么app.yaml login: required指令似乎不关心OAuth令牌;也许有人可以帮助我理解或指出更好的解决方案的方向。
https://stackoverflow.com/questions/31751961
复制相似问题