moz-morris / cakephp-facebook-auth
CakePHP 2.0 的 Facebook 身份验证处理器
Requires
- composer/installers: dev-master
This package is not auto-updated.
Last update: 2024-09-28 13:12:05 UTC
README
- 作者:Moz Morris (moz@earthview.co.uk)
- 版本 1.1
- http://www.earthview.co.uk
- 许可:MIT
Facebook 身份验证处理器的目的是为基于 CakePHP 2.0 或更高版本的应用程序提供 Facebook 身份验证。处理器按照 Cake 推荐的方法构建,用于与内置的 AuthComponent 一起使用自定义身份验证对象。处理器本身是 FacebookAuth 插件的一部分,但这是为了使处理器易于分发,包括示例配置设置和示例控制器,其中详细说明了典型用例场景。
需要注意的是,尽管此处理器存储 Facebook 返回的访问令牌,但它目前不提供调用 Graph API 的方法。它的功能是提供身份验证。当然,您可以使用访问令牌和您首选的方法与 Facebook 进行通信。
变更日志
- 1.0 首次与全世界分享。
- 1.1 默认添加电子邮件和姓名字段,并确保处理器使用配置设置
安装
获取代码
通过 Git
首先将仓库克隆到新的 app/Plugin/FacebookAuth
目录
git clone git://github.com/MozMorris/FacebookAuthenticate-CakePhp-Authentication-Handler.git /path/to/your/app/Plugin/FacebookAuth
通过 Composer
将依赖关系添加到您的 composer.json
文件中。(看起来 CakePHP 惯例是在 app/
目录下放置 composer.json
文件)
"require": {
"moz-morris/cakephp-facebook-auth": "dev-master"
}
然后执行 composer install
或 composer update
。您可能需要将 "minimum-stability": "dev"
添加到您的 composer.json
文件中。
Facebook 应用程序与应用配置
- 将示例配置 FacebookConfig.ini.example 重命名为 FacebookConfig.ini。它可以在 app/Plugin/FacebookAuth/Config/ 目录下找到
- 前往 Facebook 开发者应用,设置一个新的应用程序以获取 App ID/API 密钥和 App 密钥,或记录您现有应用程序的这些信息。注意:您的 'App Domain' 必须与您访问网站时使用的相同主机,才能启用身份验证。否则,当您尝试进行身份验证时,Facebook 将返回 "API 错误代码:191 | API 错误描述:指定的 URL 不属于该应用程序 | 错误信息:无效的 redirect_uri:给定 URL 不受应用程序配置允许"。
- 使用 App ID/API 密钥和 App 密钥更新 FacebookConfig.ini。
- 在您的引导文件 app/Config/bootstrap.php 中加载插件及其配置
- 在运行时配置 FacebookAuth 处理器
加载插件和配置(《引导文件》)
/**
* Load custom configuration files using the IniReader class
*/
App::uses('IniReader', 'Configure');
Configure::config('default', new IniReader(APP . 'Plugin' . DS . 'FacebookAuth' . DS . 'Config' . DS));
Configure::load('FacebookConfig', 'default');
/**
* Load Facebook Plugin
*/
CakePlugin::load('FacebookAuth');
在运行时配置处理器
public function beforeFilter()
{
parent::beforeFilter();
/**
* Configure FacebookAuth handler
*/
$this->Auth->authenticate['FacebookAuth.Facebook']['application'] = array(
'id' => Configure::read('facebook.app_id'),
'secret' => Configure::read('facebook.app_secret')
);
}
数据库
将 email
、name
、facebook_user_id
、facebook_access_token
字段添加到您的 User 模型中。在此示例中,我们向 users 表添加了字段,这对于使用某种用户身份验证的 Cake 应用程序来说几乎是标准做法。如果您的应用程序略有不同,则需要进行相应的更改。
ALTER TABLE `users` ADD `email` VARCHAR(255) NOT NULL DEFAULT '';
ALTER TABLE `users` ADD `name` VARCHAR(255) NOT NULL DEFAULT '';
ALTER TABLE `users` ADD `facebook_user_id` BIGINT NULL DEFAULT NULL;
ALTER TABLE `users` ADD `facebook_access_token` VARCHAR(255) NULL DEFAULT NULL;
用法
基本示例
public $components = array(
'Auth'=> array(
'authenticate' => array(
'FacebookAuth.Facebook'
)
)
);
稍微有趣一些
public $components = array(
'Auth'=> array(
'loginAction' => array(
'controller' => 'users',
'action' => 'login'
),
'loginRedirect' => array(
'controller' => 'users',
'action' => 'my_account'
),
'authError' => 'Did you really think you are allowed to see that?',
'authenticate' => array(
'FacebookAuth.Facebook' => array(
'fields' => array(
'username' => 'email',
'password' => 'password'
)
)
)
)
);
请参阅 Cake Book 了解更多关于配置您的 CakePHP AuthComponent 的方法。
插件中还包含一个示例控制器,展示了如何实现此处理器。
app/Plugin/FacebookAuth/Controller/ExampleController.php