現在、cakeDC ユーザー プラグインを拡張しようとしています。このプラグインを次の場所にある Opauth のプラグインと統合することは比較的難しいことがわかっています。
https://github.com/uzyn/cakephp-opauth
たとえば、アプリケーションで、Facebook、Google などを介してユーザーを登録およびログインする機能が必要です...
Google の実装でこれを試みており、opauth プラグインを介して Google からデータを取得できます。私の問題は、この情報をどうするかということです。このユーザーを自分のアプリに登録したい場合、これを行うための次の手順がわかりません...
配列に返されるデータは次のようになります。
Array
(
[auth] => Array
(
[uid] => 1xxxxxxxxx1
[info] => Array
(
[name] => xxx xxx
[email] => xx.xx@xx.com
[first_name] => xx
[last_name] => xx
)
[credentials] => Array
(
[token] => #%*(&)(*&%)*^$^)($%
[expires] => 2013-08-09T19:23:10+00:00
)
[raw] => Array
(
[id] => 1XXXXXXXXXXXXX1
[email] => XXXX.XXXXX@XXXXX.com
[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 プラグインと統合する方法に興味を持っている開発者は私だけではないと確信しています。
編集: (** 作業中のログイン コード **)
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->login($loginUser); にあるようです。データベースでユーザーを見つけますが、Googleアカウントを介してそれらを承認しません。