Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Как программировать с Yii2: аутентификация Google

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called How to Program With Yii2.
How to Program With Yii2: Using the Advanced Application Template
Programming With Yii2: Using Amazon S3

Russian (Pусский) translation by Anna Goorikova (you can also view the original English article)

Final product image
What You'll Be Creating

Если вы спрашиваете: «Что такое Yii?» ознакомьтесь с Введением с Yii Framework, в котором рассматриваются преимущества Yii и который включает обзор Yii 2.0.

В этом курсе Программирование с помощью Yii2 я направляю читателей в использование Yii2 Framework для PHP. В этом учебном пособии я продолжу работу по интеграции встроенного AuthClient с использованием API учетных записей Google и OAuth 2.0.

Возможно, вам будет полезно ознакомиться с уроком Программирование с Yii2: Интеграция регистрации пользователей, который проходит через интеграцию библиотеки Yii2-User для регистрации и аутентификации пользователя, и уроком Программирование с Yii2: Интеграция AuthClient с Twitter, Google и другими сетями, который исследует интеграцию с проверкой подлинности Twitter и теперь устаревшей поддержкой OpenID Google. В этом руководстве вы узнаете, как перейти от нашей более ранней интеграции Google OpenID к интеграции OAuth 2.0 с API-интерфейсом учетных записей Google.

Для этих примеров мы продолжим работу с фреймворком для расширения нашей кодовой базы проекта Hello. Используйте ссылки GitHub на этой странице, чтобы загрузить код из репозитория.

Прежде чем мы начнем, пожалуйста, помните, я стараюсь участвовать в обсуждениях ниже. Если у вас есть вопрос или предложение по теме, пожалуйста, напишите комментарий ниже или свяжитесь со мной в Twitter @reifman. Вы также можете отправить мне электронное письмо.

Если вы заметили, в этом курсе была задержка, это потому, что я недавно перенес операцию на мозге. Благодарю вас за терпение и поддержку. Приятно регулярно писать, и я с нетерпением жду продолжения освещения Yii2.

Обновление пользователя Yii2

С тех пор как я последний раз писал на эти темы, Yii2 User значительно улучшился. Первое, что нам нужно сделать, это обновить его библиотеку. Вы можете сделать это с помощью composer в командной строке:

Это автоматически обновит composer.json:

После этого запустите последнюю миграцию базы данных для пользователя Yii2 - это приведет к обновлению базы данных с помощью последней библиотеки:

Скорее всего, вы увидите что-то вроде этого:

Вы также должны перенести определение компонента для yii2-user на модули в \hello\config\web.php:

Зарегистрируйте свой проект Google

Чтобы ваши пользователи приложений Yii2 регистрировались и авторизовались в своих учетных записях Google, вам необходимо зарегистрировать проект Google в консоли разработчика:

Programming Yii2 Google Developers Console

Давайте Создадим Проект под названием yii2hello:

Programming Yii2 Google Developers Console New Project

Вы попадете на домашнюю страницу проекта с различными параметрами в меню в сайдбаре слева:

Programming Yii2 Google Developers Console Project Homepage

Важно запрашивать доступ к тем группам API, в которых мы можем использовать Google. Для Yii2 User нам нужно включить API Google+. Нажмите API & auth > API и выполните поиск google+:

Programming Yii2 Google Developers Console Search

Затем нажмите Enable API:

Programming Yii2 Google Developers Console Enable API

Вы увидите список API-интерфейсов, которые теперь включают API Google+:

Programming Yii2 Google Developers Console List Enabled APIs

Затем нам нужно добавить учетные данные, чтобы мы могли аутентифицировать наши запросы API в Google для деятельности этого проекта. Нажмите Credentials:

Programming Yii2 Google Developers Console Credentials

Давайте используем опцию ID клиента OAuth 2.0. Затем вам будет предложено создать экран согласия OAuth и заполнить информацию о вашем приложении, которая будет представлена пользователям, которые пытаются зарегистрироваться или войти в ваше приложение:

Programming Yii2 Google Developers Console OAuth Consent

На странице Credentials мы выберем Web application, и поскольку мы тестируем локально, мы предоставим два параметра для обратных вызовов аутентификации. Я использую порт 8888 для своей локальной разработки. Итак, мои Authorized JavaScript origins будут http://localhost:8888, а Yii2 User запрашивает путь Authorized redirect URIs http://localhost:8888/hello/user/security/auth?authclient=google.

Programming Yii2 Google Developers Console Project Settings

Вам будут представлены ключи API, также известные как client ID и client secret:

Далее я рассмотрю, где разместить эти ключи.

Настройка поддержки AuthClient

В разделе Защита ваших ключей от GitHub я подробно описал, как я использую конфигурационный файл для хранения всех моих ключей, отдельно от моего репозитория GitHub. Затем я включаю этот файл в начале моих файлов конфигурации Yii. Это мешает мне случайно засветить мои ключи в моем репозитории и поставить под угрозу мои учетные записи.

В моем /var/secure/hello.ini файле хранятся все ключи для моего приложения. Также разместите здесь ключи Google API:

Нам нужно добавить ссылки на эти ключи в настройках конфигурации AuthClient в нашем веб-файле конфигурации в \config\web.php. Добавьте элементы массива для всех сторонних служб, которые вы хотите поддерживать:

Кроме того, во Введении в MailTrap: Поддельный SMTP-сервер для предварительного тестирования электронной почты приложения я начал интегрировать настраиваемые параметры SMTP MailTrap в мою конфигурацию Yii SwiftMailer для целей тестирования. Это обеспечит получение регистрационных писем при регистрации на нашей локальной платформе разработки.

MailTrap SMTP Settings

Создавая урок, я обнаружил, что мне нужно обновить информацию о порте для SwiftMailer на 2525 в \config\web.php:

Регистрация с учетной записью Google

Теперь мы, наконец, готовы исследовать пользовательский интерфейс Yii2 User. Начнем с регистрации. Нажмите кнопку Sign Up в меню, и вы увидите эту форму:

Yii2 User Hello App Sign Up

Чтобы зарегистрироваться со всем, что мы создали сегодня, щелкните значок Google+. Поскольку я зарегистрирован только в одной учетной записи Google, появится прозрачное всплывающее окно и перенаправление для завершения моей регистрации:

Yii2 User Hello App Sign Up Completion

Вы должны увидеть домашнюю страницу, показывающую, что вы авторизованы, в правом верхнем углу:

Yii2 User Hello App Signed In

Вход с помощью вашего аккаунта Google

Нажмите Logout, а затем мы попытаемся войти в систему с помощью значка Google+. Нажмите Sign In в меню в хедере:

Yii2 User Hello App Sign In

Затем нажмите значок Google+ еще раз. Вы попадете прямо на главный экран, это означает, что вы вошли в систему снова. Довольно круто, да? Но что, если вы вошли в два аккаунта Google?

Yii2 User Hello App Sign In with Multiple Accounts

Когда вы выберете свой аккаунт Google для входа в систему, вы вернетесь на домашнюю страницу в режиме аутентификации.

Профиль пользователя и область подключения

Хотя он еще не настроен в нашем Bootstrap меню в хедере, если вы посетите http://localhost:8888/hello/user/settings/networks, вы увидите новый интерфейс подключения для сторонних учетных записей в Yii2 User:

Yii2 User Hello App Network Page to Connect

После входа в систему ваши пользователи могут здесь подключать и отключать свои социальные аккаунты. Также есть область управления учетными записями и профиля пользователя. Это очень хорошо сделано.

Возможно, вы захотите посмотреть мой урок Создание вашего стартапа с помощью курса PHP, в котором используется расширенный шаблон Yii2 с сторонней интеграцией, в настоящее время без User Yii2. Однако, теперь есть руководство по интеграции Yii2 User с расширенным шаблоном, поэтому я могу обновить его в ближайшее время.

Что далее?

Следите за предстоящими учебниками в моем курсе  Программирование с помощью Yii2, где я продолжаю погружаться в разные аспекты структуры.

Я приветствую пожелания по вопросам и темам. Вы можете опубликовать их в комментариях ниже или отправить мне по электронной почте на моем веб-сайте Lookahead Consulting.

Если вы хотите узнать, когда выйдет следующий учебник Yii2, следуйте за мной @reifman в Twitter или проверьте мою страницу инструктора. Моя страница инструктора будет включать все статьи из этой серии, как только они будут опубликованы.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.