我有一个GAE应用程序,可以在我的浏览器中正常工作,但当我尝试在iphone上运行相同的网站时无法弄清楚用户。 我正在使用当前的user_id发送带有channel-API的消息
这是我的python GAE应用程序中的代码 - 这里有两个defs - send_update和send_update_iphone - 如你所见它们完全相似!两者都在类更新程序()中:
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进入网站 - 我可以看到我已登录到我的Google帐户
有人可以帮忙吗?我尝试过任何我认识的>>>谢谢!
更新:我检查了饼干(感谢Calvin)并在浏览器上看到我得到了一个cookie,但在iphone中我没有得到cookie(我使用NSLog(@"Cookies: %@", [request1 responseCookies]);
)
我现在知道在浏览器中它可以工作,因为我从浏览器进入myapp.appspot.com页面,这就是为什么它有cookie,而从iphone我发布到myapp.appspot.com,但我永远不会进入页面本身,所以服务器永远不会发送给我cookie。 这很有趣,但我仍然不知道如何解决...
答案 0 :(得分:1)
我发现问题是:iphone没有作为用户进行身份验证,因为我忘记了“if not user:
self.redirect(users.create_login_url(self.request.uri))
在我请求iphone指向的页面中(myapp.appspot.com/iphone)。所以当然没有用户时user.get_current_user()回复:
'NoneType'对象没有属性'user_id'
我现在做的是首先加载UIWebView以转到myapp.appspot.com/iphone - 确保如果用户没有登录,他会,然后重定向到我需要的任何地方。< / p>