Pull to refresh

SAuth — библиотека социальной авторизации для Zend Framework

SAuth

Введение


SAuth — это библиотека социальной авторизации для Zend Framework. Она представляет из себя набор адаптеров для класса Zend_Auth. На момент написания статьи поддерживается авторизация через следующие сайты:
  • Facebook
  • Twitter
  • Foursquare
  • Goggle (OpenID)
  • Flickr
  • Vkontakte
  • Mail.ru
  • Gowalla


Большинство из них работает по протоколам OAuth, OpenID или смешанному варианту, хотя есть и собственные реализации.

Пример


В примере мы сделаем авторизация через facebook для нашего приложения.

Для начала приложение необходимо зарегистрировать у провайдера авторизации. В случае с facebook вам необходимо пройти по ссылке http://www.facebook.com/developers/apps.php и пройти несложную процедуру регистрации.

После регистрации приложения вы получите необходимые данные — Application ID и Application Secret. В зависимости от провайдера авторизации набор этих данных может отличаться.

Наш пример будет иметь два экшена — index и auth. indexAction будет проверять авторизован ли пользователь и в зависимости от результата показывать его данные, либо предлагать авторизоваться. authAction будет вызывать метод авторизации и показывать ошибки или перенаправлять пользователя на indexAction.

  1.  
  2. public function indexAction() {
  3.  
  4.     //получаем инстанс объекта авторизации
  5.     $auth = Zend_Auth::getInstance();
  6.     //проверяем на авторзицию
  7.     if ($auth->hasIdentity()) {
  8.  
  9.         $this->view->auth = true;
  10.         //это метод вернет все данные пользователя
  11.         //пришедшие от провайдера авторизации
  12.         //такие как login, email и т.д.
  13.         $this->view->parameters = $auth->getIdentity();
  14.  
  15.     } else {
  16.  
  17.         $this->view->auth = false;
  18.     }
  19. }
  20.  

Тут все достаточно просто.

Далее сам сам метод авторизации.

  1.  
  2. public function authAction() {
  3.  
  4.     //конфигурация
  5.     $config = array(
  6.         'consumerId' => 'Application ID',
  7.         'consumerSecret' => 'Application Secret',
  8.         // url на который нас перенаправит facebook после авторизации
  9.         // он должен вести обратно на authAction
  10.         'callbackUrl' => 'http:/example.com/index/auth/',
  11.         'display' => SAuth_Adapter_Facebook::DISPLAY_PAGE,
  12.     );
  13.  
  14.     $auth = Zend_Auth::getInstance();
  15.     //создаем адаптер
  16.     $adapter = new SAuth_Adapter_Facebook($config);
  17.     //авторизация
  18.     $result  = $auth->authenticate($adapter);
  19.     //если прошла - редирект на index
  20.     if ($result->isValid()) {
  21.  
  22.         $this->getResponse()->setRedirect('/');
  23.  
  24.     } else {
  25.         //если есть ошибки показываем их
  26.         $this->view->auth = false;
  27.         $this->view->errors = $result->getMessages();
  28.     }
  29. }
  30.  

Попробуем разобрать что тут происходит. Метод authenticate вызовет одноименный метод из адаптера, который разбит на две логические части. В первой происходит проверка параметров и перенаправление пользователя на сайт провайдера авторизации, а во второй обрабатывается ответ. Именно поэтому callBackUrl должен вести на authAction.

Ссылки


Пример можно посмотреть тут:
SAuth demo

Форкнуть, скачать, посмотреть код можно тут:
Страница проекта на github.com
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.