我有一個GAE應用程序,在我的瀏覽器中工作得很好,但當我嘗試在iphone上運行同一網站時無法弄清用戶。 我使用的是當前USER_ID發送消息的通道APIGAE用戶身份驗證不適用於iphone for channel_API
這是代碼在我的Python GAE應用程序 - 這裏有兩個DEFS - send_update,並send_update_iphone - 當你看到他們是完全相似!兩者都是在Class更新():
Updater():
def send_update(self):
message = self.get_fetch_message()
user = users.get_current_user()
channel.send_message(user.user_id()+user.user_id(),message)
#for iphone - no user yet...
def send_update_iphone(self):
message = self.get_fetch_message()
user = users.get_current_user()
channel.send_message(user.user_id()+user.user_id(),message)
現在,我稱他們來自不同的地方,我把第一
Updater().send_update()
和第二
Updater().send_update_iphone()
當我使用第一個應用程序可以很好地工作 - 它可以打開頻道,並且可以在沒有問題的情況下更新消息。 當我到該應用從iphone(同時登錄到我的Gmail)我得到:
「NoneType」對象有沒有屬性「USER_ID」
一些細節的iPhone側: - 我從UIWebView進入網站 - 我可以看到我登錄到我的谷歌賬戶
有人可以幫忙嗎?我嘗試了我所知道的東西>>>謝謝!
更新:我查了餅乾(感謝卡爾文),發現在瀏覽器上我得到一個cookie,但在iphone我沒有得到一個cookie(我用NSLog(@"Cookies: %@", [request1 responseCookies]);
)
我現在知道它的工作原理是瀏覽器,因爲我從我的瀏覽器進入myapp.appspot.com頁面,所以這就是爲什麼它有cookie,而從iphone我POST到myapp.appspot.com,但我從來沒有進入頁面本身,所以服務器從不向我發送cookie。 這是有趣的,但我還是不知道怎麼解決...
您應該打印出每種情況下設置的cookie。我認爲在應用程序中使用UIWebView會爲您提供來自Mobile Safari的一組單獨的Cookie。此外,登錄的Gmail用戶是否會通過App Engine登錄提示?這就是get_current_user使用的cookie的設置。 – Calvin 2011-03-14 19:15:06
嗨,我檢查了餅乾 - 將更新問題。 – 2011-03-16 08:52:59
但App Engine登錄提示是什麼?你的意思是我應該從gae獲得一個「登錄」頁面嗎?因爲我沒有,而且我使用GAE文檔中顯示的登錄方法和重定向等方法。也許您對我可以使用的登錄方法有不同的示例? – 2011-03-16 08:54:31