Платформа 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 и затем (в случае успешного входа или регистрации) будут перенаправлены обратно на страницу приложения.
Давайте рассмотрим подробнее следующие части нового кода:
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.