Для мультиязычных сайтов необходима авторизация из социальных сетей, так как по статистике, более 50 % пользователей моих сайтов зарегистрированы из социальных сетей, а именно – из twitter и facebook.
Более того уровень доверия к таким сайтам намного больше, чем к тем у которых до сих пор отсутствует система авторизации на основе социальных сетей.
Что нужно для авторизации пользователей.
- Ключ приложения twitter и секрет (секретная фраза) эти данные можно плучить на сарнице dev.twitter.com/apps, создав новое приложение.
- Zend FrameWork 2
- модули для Zend FrameWork 2 - ZfcUser и ZfcBase
- Модуль Hybridauth v 2.0.10 hybridauth-v2.0.10.zip
Модуль ZfcUser и комплект скриптов hybridauth-v2.0.10.zip
Первый не сложно найти, второй располагается по адресу - hybridauth
Итак, давайте начнём со скачивания архива hybridauth-v2.0.10.zip После этого скачайте ZfcUser - ZfcBase и ZfcUser.
ZfcUser и ZfcBase два модуля, первый из которых отвечает за авторизацию пользователя, второй содержит вспомогательные классы для изменения данных пользователя и обработки события регистрации и авторизации пользователя.
Их установка не сложна - скачайте и распакуйте в директорию с модулями Zend FrameWork 2, затем подключите их в файле /config/application.config.php
Предположим Вы имеете структуру из следующих модулей (глобальный конфигурационный файл "application.config.php"):
После этого, необходимо настроить Hybridauth, для этого отредактируйте файл config.php, который находится в директории \hybridauth\hybridauth\ следующим образом, - замените полученными при регистрации вашего приложения (https://dev.twitter.com/apps) ключом и секретной фразой параметры «keys» и «secret» в файле /hybridauth/hybridauth/config.php:
После этого нужно создать новое действие, которое будет являtтся страницей авторизацией из twitter.com на вашем сайте, - например:
Обратите внимание необходимо правильно указать пути до основной директории hybridauth! Заранее скажу, что так писать код не совсем соответствует правилам Zend Framework, по правилам нужно вынести подключаемые классы HybridAuth в отдельную директорю Plugin, основного класса и подключать их в качетсве плагина Zend FrameWork, но в целях упрощения и обучения, думаю, так можно поступить на первое время.
дальше мы проверяем, был ли осуществлён ранее вход с twitter
после этого получаем данные и выводим
выводим дополнительную статистику из аккаунта twitter
$service – переменная, хранящая результат работы класса «ServiceManager», по сути своей - это класс для доступа к другим классам нашего модуля. Полная информация о том, что такое «ServiceManager» – ServiceManager
'zfcuser_user_service' – обозначение вспомогательного класса (сервиса), который находится в директории \module\ZfcUser\src\ZfcUser\Service\ в файле User.php Далее getUserService будет содержать результат выполнения метода
Интерфейс пользователя нужен для установки и модификации персональных данных пользователя, он поставляется по умолчанию вместе с модулем «ZfcUser»: $user = new \ZfcUser\Entity\User();
До того как Вы начнёте менять данные пользователя, необходимо осуществить проверку на наличие этого пользоателя в базе данных, если пользователь был ранее и осуществил вход не за чем повторено создавать запись об этом пользователе, нужно обновить уже сущетсвующую:
findByIdentifier может быть следующего содержания и находится по адресу \module\ZfcUser\src\ZfcUser\Mapper\User.php
Обязательно установите временный пароль пользователю для того чтобы он мог войти в этот же аккаунт через обычный вход! Далее можно установить данные для пользователя на Ваш вкус, временный пароль и т.д. эти функции здесь удалены. Внимание! В этом примере пароль пустой!
Hybridauth устроен таким образом, что данные ранее полученные от twitter сохраняются в хранилище (сессию) её можно удалить, хотя сделано это больше для тестирования или например, если Вам нужно постоянно отслеживать статус авторизации на сайте twitter, а не получать старые данные.
// нужно или нет?
$hybridauth->restoreSessionData();
// нужно или нет?
После этого остаётся перенаправить пользователя в его аккаунт методом dispatch действию authenticate контроллёра «zfcuser», передав дополнительный параметр 'twitter'=>$post['twitter'] и не обращайте внимание на код после строки "// TODO: Add the redirect parameter here...":
Таким образом можно расширить стандартную аутентификацию пользователя! При этом по тому же принципу можно добавить весь набор социальных сетей, которые находятся в Hybridauth:
- Foursquare
- MySpace
- Live
- AOL
- Yahoo
- OpenID
37 просмотров
Взаимосвязанные материалы
Расскажу про геотаргетинг и как его встроить в приложения на Zend Framework 2. Геотаргетинг - это определение местоположения пользователя на основе его персональных данных, ip д.р. способы.
читать...Для мультиязычных сайтов необходима авторизация из социальных сетей, так как по статистике, более 50 % пользователей моих сайтов зарегистрированы из социальных сетей, а именно
читать...В Zend Framework 2 не так просто привязать к определённому макету определенный модуль.
читать...