如何将 Facebook SDK 登录与 cakephp 2.x 集成? [英] How do I integrate Facebook SDK login with cakephp 2.x?

查看:29
本文介绍了如何将 Facebook SDK 登录与 cakephp 2.x 集成?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

关于将 Facebook 登录与在线 cakephp Auth 组件集成的最新资源似乎很少甚至没有.我找到了以下资源:

  1. 使用 cakephp 1.3 的旧面包店文章?和旧版本的 Facebook SDK
  2. webtechnick 的 Cakephp 插件,似乎正在开发中

除此之外,我没有找到确定的资源.我希望集成尽可能灵活(不使用魔术插件).因此,经过大量研究,我终于得出了一个不错的解决方案,我今天在这里分享.请贡献,因为我对蛋糕很陌生.

解决方案

Cakephp 2.x Auth 与 Facebook Auth 的集成以实现无缝用户身份验证

首先,您应该阅读出色的 cakePHP 验证组件并遵循来自 cakephp book 2.x 的简单身份验证和授权应用教程(假设您还学习了本系列的前两个教程.完成后,您应该已经成功构建了一个带有用户身份验证的简单 cakePHP 应用程序和授权.

接下来您应该下载 facebook SDK 并获得一个 应用 ID 来自 Facebook.

<小时>

首先,我们将 Facebook sdk 复制到 App/Vendors.然后我们将在 AppController 中导入并初始化它 beforeFilter 方法.

//app/Controller/AppController.php公共函数 beforeFilter() {App::import('供应商', 'facebook-php-sdk-master/src/facebook');$this->Facebook = new Facebook(array('appId' =>'App_ID_of_facebook','秘密' =>'App_Secret'));$this->Auth->allow('index', 'view');}

我们正在 AppController 中初始化 Facebook SDK,以便我们可以在整个应用程序中访问它.接下来我们将使用 SDK 生成 Facebook 登录 URL 并将其传递给视图.我通常在 beforeRender 方法中执行此操作.

注意:上面的配置细节(appId & secret)最好保存在 App/Config/facebook.php 中.然后你应该使用cake Configure.

//app/Controller/AppController.php公共函数 beforeRender() {$this->set('fb_login_url', $this->Facebook->getLoginUrl(array('redirect_uri' => Router::url(array('controller' =>'users', 'action')=> '登录'), 真))));$this->set('user', $this->Auth->user());}

我们将更新我们的布局,以便我们可以为所有尚未登录的用户显示此 facebook 登录链接.请注意我们如何将 redirect_uri 设置为我们的应用程序用户/登录操作.这样一旦 facebook 对用户进行了身份验证,我们也可以使用 cake::Auth 登录他.这有很多好处,包括这个问题的解决方案.