我有一个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