2013-08-09 3 views
0

В настоящее время я пытаюсь расширить плагин пользователей cakeDC. Это оказывается довольно трудно интегрировать этот плагин с плагином для Opauth расположенного здесь:Расширение плагина пользователей CakeDC для использования с Opauth или OpenID

https://github.com/uzyn/cakephp-opauth

Например, я хочу в своем приложении возможность зарегистрироваться и войти пользователь через Facebook, Google и т.д. ...

Я пытаюсь это с реализацией google, и я могу получить данные из Google через плагин opauth. Мои проблемы связаны с тем, что мне теперь делать с этой информацией? Если я хочу, чтобы зарегистрировать пользователя с моим App, я не знаю, следующие шаги, чтобы сделать это ...

Это то, что данные, возвращаемые в массиве выглядит следующим образом:

Array 
(
    [auth] => Array 
     (
      [uid] => 1xxxxxxxxx1 
      [info] => Array 
       (
        [name] => xxx xxx 
        [email] => [email protected] 
        [first_name] => xx 
        [last_name] => xx 
       ) 

      [credentials] => Array 
       (
        [token] => #%*(&)(*&%)*^$^)($% 
        [expires] => 2013-08-09T19:23:10+00:00 
       ) 

      [raw] => Array 
       (
        [id] => 1XXXXXXXXXXXXX1 
        [email] => [email protected] 
        [verified_email] => 1 
        [name] => XXX XXX 
        [given_name] => XXXX 
        [family_name] => XXXXX 
        [gender] => male 
        [locale] => en 
        [hd] => test.com 
       ) 

      [provider] => Google 
     ) 

    [timestamp] => 2013-08-09T18:23:11+00:00 
    [signature] => *#&$&$$&$&$&$&$$#### 
    [validated] => 1 
) 

Это оленья кожа мне кажется, что есть токен паролей, который остается сгенерированным для сравнения, но это даже не текущий блокиратор. Блокатор находится в том, как регистрировать эту информацию в расширенном классе плагинов пользователей cakeDC. Любая помощь очень приветствуется, и я уверен, что я не единственный разработчик, который любопытно, как расширить этот плагин для интеграции с плагином Opauth.

правок: (** РАБОЧАЯ LOGIN CODE **)

 public function beforeFilter() { 

    $this->Auth->Allow('opauth_complete'); 

} 
public function opauth_complete() { 

    $user = $this->set('opauth_data', $this->request->data); 

    $loginUser = $this->User->find('first', 
     array('fields'=>array('User.*'), 
      'conditions'=>array('User.email'=>$this->request->data['auth']['info']['email']))); 

    if ($this->request->is('post')) { 

     if ($this->Auth->login($loginUser)) { 

      //return $this->redirect($this->Auth->redirect()); 
      $this->Session->setFlash(__('You are logged in.')); 

     }else{ 

      $this->Session->setFlash(__('You are currently not Authorized')); 

     } 

    } 

} 

зависание, кажется, на $ this-> Auth-> Логин ($ loginUser); Он находит пользователя в базе данных, и все же он по-прежнему не авторизует их через учетную запись google.

ответ

1

Это довольно ясно, что должно быть сделано с этим удаленным данным:

  1. сохранить его в вашей БД, если она уже не существует, сгенерировать искусственный пароль, просто используйте идентификатор и некоторые секретные соли для пример
  2. Введите пользователя с этими данными, используя $ this-> Auth-> login ($ data);

Если вы хотите разрешить существующему пользователю связать удаленную учетную запись с локальной учетной записью, вам придется реализовать для нее логику и рабочий процесс. Сохраните данные opauth в сеансе, переадресовывайтесь в форму регистрации/регистрации и дайте пользователю ввести его имя пользователя и пароль, а затем свяжите удаленную учетную запись с помощью этого пользователя.

+0

Я смотрел на это снова и снова и, кажется, пропустил шаг и, вероятно, был второстепенным. Я отредактировал мой первоначальный вопрос, и вы увидите мой очень простой попытки разрешить зарегистрированным пользователем – lockdown

+1

Оказывается, это был ключ все вместе: \t общественная функция beforeFilter() { \t \t $ this-> Auth-> Разрешить ('opauth_complete'); \t} – lockdown

Смежные вопросы