Аутентификация пользователей GAE не работает с iphone для channel_API - PullRequest
0 голосов
/ 14 марта 2011

У меня есть приложение GAE, которое прекрасно работает из моего браузера, но не может определить пользователя, когда я пытаюсь запустить тот же веб-сайт на iphone. Я использую текущий user_id для отправки сообщения с помощью channel-API

Это код в моем приложении python GAE - вот две определения - send_update и send_update_iphone - как вы видите, они абсолютно похожи! оба находятся в Class Updater ():

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 (во время входа в мою почту), я получаю:

Объект 'NoneType' не имеет атрибута 'user_id'

несколько деталей для iPhone: - я попадаю на сайт из UIWebView - Я вижу, что я вошел в свою учетную запись Google

Может кто-нибудь помочь? Я пробовал все, что знаю >>> Спасибо!

ОБНОВЛЕНИЕ: я проверил куки (спасибо Calvin) и увидел, что в браузере я получаю куки, но в iphone я не получаю куки (я использую NSLog(@"Cookies: %@", [request1 responseCookies]);)

Теперь я знаю, что в браузере это работает, потому что я захожу на страницу myapp.appspot.com из моего браузера, поэтому у него есть cookie, а с iphone я ПОСТУПАЮ на myapp.appspot.com, но я никогда не попаду на саму страницу, поэтому сервер никогда не отправит мне cookie. Это интересно, но я до сих пор не знаю, как решить ...

1 Ответ

1 голос
/ 16 марта 2011

Я обнаружил, в чем проблема: 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 - чтобы убедиться, что если пользователь не вошел в систему, он выполнит его, а затем перенаправит туда, куда мне нужно.

...