Избранное | Русский | Войти

Использование службы Users

Google App Engine предоставляет несколько полезных служб на основе инфраструктуры Google, которые доступны приложениям, использующим библиотеки, включенные в SDK. Одна из них – служба Users, позволяющая интегрировать приложение с аккаунтами пользователей Google. С помощью этой службы пользователи смогут применять для входа в ваше приложение свои аккаунты Google.

Воспользуемся службой Users для персонификации этого приложения приветствия.

Использование службы Users

Снова откройте файл helloworld/helloworld.py и замените его содержание следующим:

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
  def get(self):
    user = users.get_current_user()

    if user:
      self.response.headers['Content-Type'] = 'text/plain'
      self.response.out.write('Hello, ' + user.nickname())
    else:
      self.redirect(users.create_login_url(self.request.uri))

application = webapp.WSGIApplication(
                                     [('/', MainPage)],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

Обновите страницу в браузере. Приложение перенаправит вас на локальную версию страницы входа Google, которая подходит для тестирования приложения. На этом экране можно указать любое имя пользователя, и приложение увидит имитацию объекта User, основанного на этом имени.

При работе приложения в App Engine пользователи будут направляться на страницу входа в аккаунт Google, а после успешного входа или создания аккаунта – обратно к вашему приложению.

API пользователей

Рассмотрим новые фрагменты кода подробнее:

user = users.get_current_user()

Если пользователь уже вошел в приложение, метод get_current_user() возвращает объект User пользователя. В противном случае он возвращает значение None.

if user:
  self.response.headers['Content-Type'] = 'text/plain'
  self.response.out.write('Hello, ' + user.nickname())

Если пользователь выполнил вход в систему, нужно отобразить для него персональное сообщение, используя псевдоним, связанный с его аккаунтом.

else:
  self.redirect(users.create_login_url(self.request.uri))

Если пользователь не выполнил вход, укажите webapp, что браузер пользователя нужно перенаправить на страницу входа в аккаунт Google. Перенаправление содержит URL этой страницы (self.request.uri), чтобы механизм входа в аккаунт Google отправил пользователя обратно после выполнения входа или регистрации нового аккаунта.

Подробнее об API пользователей рассказано в справочном руководстве по API пользователей.

Далее...

Теперь наше приложение может приветствовать пользователей по именам. Добавим функцию, позволяющую пользователям приветствовать друг друга.

Переходите к разделу Работа с формами в webapp.