2011-03-05 20 views
7

我从一个Greasemonkey脚本使用一个非常简单的GAE实例。这在过去的几个月中运行良好,但现在路径被添加到最终的“继续”位置,这为我打破了登录过程。为什么Google App Engine在登录过程中为我的“继续”位置追加路径?

的基本工作流程,假设用户登录到谷歌自己的帐户,但他对GAE例如令牌已超时下:

  1. 用户打开网页A安装了通用脚本。
  2. 该GM运行脚本,并尝试与GM_xmlhttpRequest访问GAE实例()。
  3. 的GAE实例返回 “login_needed | <loginurl>”。 GM脚本提取loginurl并在其上设置window.location
  4. 用户被重定向到loginurl并最终回。然而,这一次,实际数据是由GM_xmlhttpRequest()返回。

最后一步不再起作用,因为用户现在重定向到loginurl 加上一些,这给目标站点404。

的GAE代码仅仅是一半的代码的屏幕。认证相关的代码是这样的:

if not users.get_current_user(): 
    self.response.headers['Content-Type'] = 'text/plain' 
    self.response.out.write('login_needed|'+users.create_login_url(self.request.get('uri'))) 

请求的顺序如下,无不引起重定向:

  • GET https://mygaeinstance.appspot.com/?uri=https: //targetsite.com/
  • GET https://www.google.com/accounts/ServiceLogin?service=ah &被动=真&继续= HTTPS://appengine.google.com/ _啊/ conflogin %3Fcontinue%3Dhttps://targetsite.com/ & ltmpl =克& ahname = MyGAEInstance & SIG = <一些SIG >
  • GET https://appengine.google.com/ _啊/ conflogin?继续= HTTPS%3A%2F%2Ftargetsite.com%2F & PLI = 1 & AUTH = <一些BASE64的身份验证令牌>
  • GET https://targetsite.com/ _啊/ conflogin?状态= <一些的base64状态>

targetsite.com不喜欢这条道路,正如你所看到的,它是不是在最初的“继续”参数传递给appengine.google.com,这只是“https://targetsite.com/ ”。我做错了什么,我该如何解决这个问题?

+0

您列出的所有URL均用于内部App Engine URL。它在哪里被重定向到targetsite.com? – 2011-03-08 00:27:45

+0

GAE中的用户API用于在GAE网站中对用户进行身份验证。为什么你将用户重定向到另一个网站? – olivierlemasle 2011-03-08 11:44:23

+0

@NickJohnson:重定向回到targetsite.com是[create_login_url()](https://code.google.com/appengine/docs/python/users/functions.html#create_login_url)调用的一部分,我称之为'继续',他们称之为'dest_url'。这是GAE在登录完成后重定向的地方。如果我无法弄清楚为什么突然停止工作,我想一个解决方法是使用该参数重定向回我的GAE实例,然后使用另一个重定向将用户重定向到targetsite.com。到目前为止,我可以不做,节省一个请求/响应周期。 – 2011-03-08 13:12:17

回答

3

我们最近对App Engine的登录流进行了一次更改,导致在应用程序自己的域之外使用连续网址的登录会导致错误的重定向,例如您正在观察的重定向。

我们正在努力解决这个。与此同时,解决方法是在您自己的应用程序上设置重定向处理程序。将它作为continue参数的目标,并让它发送最终重定向到您的实际目标。

+4

关于此问题的任何票证/问题? – 2011-03-08 17:21:13

+1

仍然打破btw。,任何进展? :) – 2011-06-06 08:59:17

+1

是否仍有计划解决这个问题?它是否在你的问题追踪器上? – 2011-11-08 20:24:28

相关问题