Авторизация пользователей

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

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

Использование авторизации

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

import wsgiref.handlers

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

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))

def main():
  application = webapp.WSGIApplication(
                                       [('/', MainPage)],
                                       debug=True)
  wsgiref.handlers.CGIHandler().run(application)

if __name__ == "__main__":
  main()

Обновите страницу приложения в своем браузере. Так как наше приложение находится в режиме отладки, оно перейдет на локальную версию интерфейса авторизации Google. Вы можете ввести любое имя пользователя, которое затем будет передано в объект User нашего приложения.

Однако, когда приложение будет опубликовано на платформе App Engine, пользователи попадут на реальную форму авторизации аккаунтов Google и затем (в случае успешного входа или регистрации) будут перенаправлены обратно на страницу приложения.

Users 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. Для того, чтобы пользователь после проведения авторизации, попал обратно в наше приложение, этот метод включает ссылку на нашу страницу (self.request.uri).

Для изучения всех возможностей Users API обратитесь к описанию Users API.

Далее...

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

Перейти к Управление формами через webapp.