2012-07-12 43 views
2

我有一個客戶端測試應用程序和一個服務器應用程序,都在GAE上託管。客戶端是一個簡單的Web前端,服務器託管由Oauth保護的資源。身份驗證通過OpenId進行,應用程序支持聯合登錄。問題是,在用戶登錄後,userService似乎忘記了他們是誰(瀏覽器有一個ACSID cookie,因此它會記住)。UserService失去loggedInUser?

以下是流程(來自GAE日誌).... 用戶首先在瀏覽器中輸入cktestclient.appspot.com(客戶端應用程序)並按下ShowMyCommitments按鈕。然後在服務器端日誌(commitkeeperapi.appspot.com)中看到以下內容。

上午9時10分22秒:/的OAuth /授權RESPONSE_TYPE =代碼&的client_id = webappclient & REDIRECT_URI = http://cktestclient.appspot.com/client/showStartPage&scope=CommitKeeper_Access 我們還沒有登錄呢,所以我們會被重定向 上午9時10分22秒:/? ?登錄/繼續= http://commitkeeperapi.appspot.com/oauth/authorize?response_type=code&client_id=webappclient&redirect_uri=http://cktestclient.appspot.com/client/showStartPage&scope=CommitKeeper_Access 我再登錄使用createLoginURL產生

上午9時10分33秒的URL:/?的OAuth /授權RESPONSE_TYPE =代碼&的client_id = webappclient & REDIRECT_URI = http://cktestclient.appspot.com/client/showStartPage&scope=CommitKeeper_Access 的OAuth舞蹈繼續和我們看到的我們有一個登錄用戶 com .fourspires.api.server.MyGaeAuthenticator驗證:當前用戶(從userService)是:[email protected]

上午09時10分34秒:/的OAuth/ 的access_token更多的Oauth跳舞......越來越oAuthToken,返回客戶端在cktestclient.appspot.com:/client/showStartPage-繼續在commitkeeperapi.appspot.com打電話:/v3/commitments

9:10:34 AM:/ oauth/validate Dancing ...驗證oAuthToken,將其用爲承諾請求

上午09時十分36秒發送:?/ V3 /承諾/組oauth_token = 9491caca6c9ad2b2cb2d20a5cf2773ce22b99e076ff0dcb3a47d06e6a26038d5ccf63c66f1f2387e 現在我們回到服務器代碼上,我們檢查用戶 - 它是空的!
com.fourspires.api.util.UserHelpers getCurrentUser:UserServiceFactory.getUserService()getCurrentUser()= NULL

回顧的基礎上,我可以在這個問題上,我真正加入到服務器的應用程序引擎,網絡中的所有線程。 XML - 但沒有改變。

有誰知道爲什麼UserService失去了我的用戶跟蹤?我有一個解決這個問題的方法,但我有興趣瞭解更多關於這個失敗的原因。

PS - 這看起來與GWT and AppEngine User Service非常相似,但似乎沒有解決。

回答

0

我相信答案是因爲我做出的兩個請求是由不同的ApiProxy處理的,它們有不同的環境,因此對當前用戶是誰有不同的理解。我不確定爲什麼我會得到兩個不同的ApiProxys,但我可以對此進行進一步的調查。