2011-03-05 19 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

相關問題