对于channel_API,GAE用户身份验证无法在iphone上运行

时间:2011-03-14 07:33:26

标签: iphone google-app-engine channel-api

我有一个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。 这很有趣,但我仍然不知道如何解决...

1 个答案:

答案 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>