HybridAuth 使开发人员能够轻松构建社交应用程序,通过实施社交登录、社交分享、用户个人资料、好友列表、活动流、状态更新等功能,在社交层面上吸引网站访客和客户。 HybridAuth 的目标是充当应用程序和各种社交 API 和身份提供商(如 Facebook、Twitter、MySpace 和 Google)之间的抽象 API。本文有望改进对 CakePHP 的 Hybridauth 支持。
> <h1>使用 Hybridauth 进行社交登录< h1> Hybridauth 扩展了我们的应用程序,以便在我们的应用程序中使用社交提供商身份验证。它可以与 Auth 组件无缝结合。概念很简单(据我所知),Hybridauth 将使用我们的社交提供商身份(如 Facebook、Twitter、Google 等)进行身份验证,然后将一个对象返回到我们的应用程序,我们可以在需要时使用它。 ><br >
如何使用
1. 下载 Hybridauth(与本文一起使用的稳定版本为 2.0.11 版) > 2. 将 hybridauth 文件夹放入应用程序的 webroot 文件夹中(app webroot/hybridauth) > 3. 在您的 UsersController 中添加:<br >
在控制器最顶部。> 注意:如果您使用的是 auth 组件,您可能需要在 AppController 的最顶部放置 session_start()。> 然后创建函数: <pre> public function loginwith($provider) { / $this->autoRender = false; require_once( WWW_ROOT . ‘hybridauth/Hybrid/Auth.php’ ); $hybridauth_config = array( “base_url” => ‘http://’ . $_SERVER[‘HTTP_HOST’] . $this->base . “/hybridauth/”, // 设置 hybridauth 路径 “providers” => array( “Facebook” => array( “enabled” => true, “keys” => array(“id” => “your_fb_api_key”, “secret” => “fb_api_secret”), “scope” => ‘email’, ), “Twitter” => array( “enabled” => true, “keys” => array(“key” => “twitter_api_key”, “secret” => “twitter_api_secret”) ) // 对于其他提供商,请参阅 hybridauth 文档 ) ); try { // 使用配置文件路径作为参数为 Hybridauth 创建一个实例 $hybridauth = new Hybrid_Auth($hybridauth_config); // 尝试对所选的 $provider 进行身份验证 $adapter = $hybridauth->authenticate($provider); // 获取用户个人资料 $user_profile = $adapter->getUserProfile(); //debug($user_profile); // 取消注释以打印对象 //exit(); //$this->set( ‘user_profile’, $user_profile ); // 使用 auth 组件登录用户 if (!empty($user_profile)) { $user = $this->_findOrCreateUser($user_profile, $provider); // 如果您与 Auth 组件结合使用,则可选函数 unset($user[‘password’]); $this->request->data[‘User’] = $user; if ($this->Auth->login($this->request->data[‘User’])) { $this->redirect($this->Auth->redirect()); $this->Session->setFlash(‘您已成功登录’); } else { $this->Session->setFlash(‘登录失败’); } } } catch (Exception $e) { // 显示收到的错误 switch ($e->getCode()) { case 0 : $error = “未指定的错误。”; break; case 1 : $error = “Hybriauth 配置错误。”; break; case 2 : $error = “提供商配置不当。”; break; case 3 : $error = “未知或已禁用的提供商。”; break; case 4 : $error = “缺少提供商应用程序凭据。”; break; case 5 : $error = “身份验证失败。用户已取消身份验证或提供商拒绝连接。”; break; case 6 : $error = “用户个人资料请求失败。很可能是用户未连接到提供商,他应该再次进行身份验证。”; $adapter->logout(); break; case 7 : $error = “用户未连接到提供商。”; $adapter->logout(); break; } // 好吧,基本上你不应该将此显示给最终用户,只需给他一个提示然后继续。 $error .= “原始错误消息:” . $e->getMessage(); $error .= “跟踪:” . $e->getTraceAsString(); $this->set(‘error’, $error); } } // 这是一个可选函数,用于在数据库中不存在时创建用户。您可以使用您的 hybridauth 对象执行任何操作 private function _findOrCreateUser($user_profile = array(), $provider=null) { if (!empty($user_profile)) { $user = $this->User->find(‘first’, array(‘conditions’ => array( ‘OR’=>array(‘User.username’ => $user_profile->identifier, ‘User.email’=>$user_profile->email)))); if (!$user) { $this->User->create(); $this->User->set(array( ‘group_id’ => 2, ‘first_name’ => $user_profile->firstName, ‘last_name’ => $user_profile->lastName, ‘email’ => $user_profile->email, ‘username’ => $user_profile->identifier, ‘password’ => AuthComponent::password($user_profile->identifier), // 如果您需要将密码保存到数据库 ‘country’ => $user_profile->country, ‘city’ => $user_profile->city, ‘address’ => $user_profile->address, // 添加您想要的其他字段 )); if ($this->User->save()) { $this->User->recursive = -1; $user = $this->User->read(null, $this->User->getLastInsertId()); return $user[‘User’]; } } else { return $user[‘User’]; } } } 4. 在您的视图中(例如 login.ctp)添加:> <code><span style=”color: #000000”> <br ><divclass=”login-button- div”> <ahref=”loginwith/facebook”class=”zocialfacebook”>使用 Facebook 登录</a > <ahref=”loginwith/twitter”class=”zocialtwitter”>使用 Twitter 登录</a> </div> 仅此而已。> 除本文外,您还可以找到 <a href=”http: /hybridauth.sourceforge.net/download.html#index”> 使用 Hybridauth 的 CakePHP 2 应用程序示例。本文基于示例应用程序,仅进行了少量修改,本文的功劳归属于创建了 hybridauth 和使用 hybridauth 的 CakePHP 示例应用程序的人。><br > 烘焙愉快..
使用 Hybridauth 进行社交登录
HybridAuth 使开发人员能够轻松构建社交应用程序,通过实施社交登录、社交分享、用户个人资料、好友列表、活动流、状态更新等功能,在社交层面上吸引网站访客和客户。 HybridAuth 的目标是充当应用程序和各种社交 API 和身份提供商(如 Facebook、Twitter、MySpace 和 Google)之间的抽象 API。本文有望改进对 CakePHP 的 Hybridauth 支持。
首先:对于我的英语表示歉意,这是我的第一篇文章,如果您发现错误,请纠正这篇文章。 :)
> <h1>使用 Hybridauth 进行社交登录< h1> Hybridauth 扩展了我们的应用程序,以便在我们的应用程序中使用社交提供商身份验证。它可以与 Auth 组件无缝结合。概念很简单(据我所知),Hybridauth 将使用我们的社交提供商身份(如 Facebook、Twitter、Google 等)进行身份验证,然后将一个对象返回到我们的应用程序,我们可以在需要时使用它。 ><br >
如何使用
1. 下载 Hybridauth(与本文一起使用的稳定版本为 2.0.11 版) > 2. 将 hybridauth 文件夹放入应用程序的 webroot 文件夹中(app webroot/hybridauth) > 3. 在您的 UsersController 中添加:<br >
在控制器最顶部。> 注意:如果您使用的是 auth 组件,您可能需要在 AppController 的最顶部放置 session_start()。> 然后创建函数: <pre> public function loginwith($provider) { / $this->autoRender = false; require_once( WWW_ROOT . ‘hybridauth/Hybrid/Auth.php’ ); $hybridauth_config = array( “base_url” => ‘http://’ . $_SERVER[‘HTTP_HOST’] . $this->base . “/hybridauth/”, // 设置 hybridauth 路径 “providers” => array( “Facebook” => array( “enabled” => true, “keys” => array(“id” => “your_fb_api_key”, “secret” => “fb_api_secret”), “scope” => ‘email’, ), “Twitter” => array( “enabled” => true, “keys” => array(“key” => “twitter_api_key”, “secret” => “twitter_api_secret”) ) // 对于其他提供商,请参阅 hybridauth 文档 ) ); try { // 使用配置文件路径作为参数为 Hybridauth 创建一个实例 $hybridauth = new Hybrid_Auth($hybridauth_config); // 尝试对所选的 $provider 进行身份验证 $adapter = $hybridauth->authenticate($provider); // 获取用户个人资料 $user_profile = $adapter->getUserProfile(); //debug($user_profile); // 取消注释以打印对象 //exit(); //$this->set( ‘user_profile’, $user_profile ); // 使用 auth 组件登录用户 if (!empty($user_profile)) { $user = $this->_findOrCreateUser($user_profile, $provider); // 如果您与 Auth 组件结合使用,则可选函数 unset($user[‘password’]); $this->request->data[‘User’] = $user; if ($this->Auth->login($this->request->data[‘User’])) { $this->redirect($this->Auth->redirect()); $this->Session->setFlash(‘您已成功登录’); } else { $this->Session->setFlash(‘登录失败’); } } } catch (Exception $e) { // 显示收到的错误 switch ($e->getCode()) { case 0 : $error = “未指定的错误。”; break; case 1 : $error = “Hybriauth 配置错误。”; break; case 2 : $error = “提供商配置不当。”; break; case 3 : $error = “未知或已禁用的提供商。”; break; case 4 : $error = “缺少提供商应用程序凭据。”; break; case 5 : $error = “身份验证失败。用户已取消身份验证或提供商拒绝连接。”; break; case 6 : $error = “用户个人资料请求失败。很可能是用户未连接到提供商,他应该再次进行身份验证。”; $adapter->logout(); break; case 7 : $error = “用户未连接到提供商。”; $adapter->logout(); break; } // 好吧,基本上你不应该将此显示给最终用户,只需给他一个提示然后继续。 $error .= “原始错误消息:” . $e->getMessage(); $error .= “跟踪:” . $e->getTraceAsString(); $this->set(‘error’, $error); } } // 这是一个可选函数,用于在数据库中不存在时创建用户。您可以使用您的 hybridauth 对象执行任何操作 private function _findOrCreateUser($user_profile = array(), $provider=null) { if (!empty($user_profile)) { $user = $this->User->find(‘first’, array(‘conditions’ => array( ‘OR’=>array(‘User.username’ => $user_profile->identifier, ‘User.email’=>$user_profile->email)))); if (!$user) { $this->User->create(); $this->User->set(array( ‘group_id’ => 2, ‘first_name’ => $user_profile->firstName, ‘last_name’ => $user_profile->lastName, ‘email’ => $user_profile->email, ‘username’ => $user_profile->identifier, ‘password’ => AuthComponent::password($user_profile->identifier), // 如果您需要将密码保存到数据库 ‘country’ => $user_profile->country, ‘city’ => $user_profile->city, ‘address’ => $user_profile->address, // 添加您想要的其他字段 )); if ($this->User->save()) { $this->User->recursive = -1; $user = $this->User->read(null, $this->User->getLastInsertId()); return $user[‘User’]; } } else { return $user[‘User’]; } } } 4. 在您的视图中(例如 login.ctp)添加:> <code><span style=”color: #000000”> <br ><divclass=”login-button- div”> <ahref=”loginwith/facebook”class=”zocialfacebook”>使用 Facebook 登录</a > <ahref=”loginwith/twitter”class=”zocialtwitter”>使用 Twitter 登录</a> </div> 仅此而已。> 除本文外,您还可以找到 <a href=”http: /hybridauth.sourceforge.net/download.html#index”> 使用 Hybridauth 的 CakePHP 2 应用程序示例。本文基于示例应用程序,仅进行了少量修改,本文的功劳归属于创建了 hybridauth 和使用 hybridauth 的 CakePHP 示例应用程序的人。><br > 烘焙愉快..