我目前正在尝试扩展cakeDC用户插件。将此插件与位于此处的Opauth插件集成相当困难:
https://github.com/uzyn/cakephp-opauth
例如,我希望在我的应用程序中能够通过Facebook,谷歌等注册和登录用户......
我一直尝试使用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);它在数据库中找到用户,但它仍然不会通过谷歌帐户授权他们。
答案 0 :(得分:1)
很清楚这个远程数据需要做什么:
如果您希望允许现有用户将远程帐户与本地帐户相关联,则必须为其实施逻辑和工作流程。将opauth数据保存到会话中,重定向到注册/登录表单,让用户输入他的用户名和密码,然后使用with this user关联远程帐户。