【问题标题】:Rietveld and upload.py oauth2 flow seems brokenRietveld 和 upload.py oauth2 流程似乎中断了
【发布时间】:2015-10-23 11:23:29
【问题描述】:

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

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。我可以通过 Web 门户成功登录 Rietveld 实例。我还可以使用upload.py 和即将弃用的 ClientAuth(密码)流程成功上传补丁集。我已经用 python 2.7.6 和 2.7.10 试过了。使用自定义域时,2.7.6 存在 SSL/SNI 问题,但这是一个红鲱鱼。

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

我的研究无处可去;在我深入了解 Rietveld 资源之前,我会在这里发帖。有人还有什么我应该检查的吗?我是 GAE 的新手。如果没有其他人看到这个,它可能是配置,但我正在努力弄清楚它可能在哪里/是什么。

【问题讨论】:

    标签: python google-app-engine oauth


    【解决方案1】:

    好吧,这不是一个理想的情况,但我的解决方案是在app.yaml 中为与上传相关的路由添加显式url,并将它们从login: required 中排除。然后,我破解了 Rietveld 核心中的相应视图函数,并用@login_required 装饰它们。最初我认为 YAML 设置只是为了方便。但是,通过一些登录尝试找出重定向是如何实际生成的,表明情况并非如此。我不知道为什么 app.yaml login: required 指令似乎并不关心 OAuth 令牌;也许有人可以帮助我理解或指出更好的解决方案的方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-24
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多