lucasff / cakephp-facebook-plugin
CakePHP Facebook 插件
Requires
- php: >=5.3.0
- composer/installers: *
This package is auto-updated.
Last update: 2024-09-06 08:21:49 UTC
README
- 作者:Nick Baker (nick@webtechnick.com)
- http://www.webtechnick.com
- 许可证:MIT
- 版本:3.1.3
Facebook 插件旨在提供一个无缝的方式将您的 CakePHP 应用连接到最受欢迎的社会化网站——Facebook。这个插件的目标不仅是提供非常实用的动态功能,而且还提供完整的 Facebook API 接口。
变更日志
- 1.0 初始 alpha 版本
- 1.1 添加了 API 功能
- 1.2 初始 beta 版本
- 1.2.1 小型错误修复和测试
- 1.3 添加 FacebookInfo 类,以便在插件详细信息中的任何位置进行轻松引用。
- 1.4.0 添加 FacebookApi 库。可用于从任何地方访问 FacebookApi。
- 1.5.0 添加了 Facebook 权限提示
- 1.5.1 Facebook Connect 可以接受类似于 cake 1.3 核心组件的设置
- 1.5.2 添加了 Facebook.Connect 用户方法,类似于 Auth 来检索用户数据。
- 1.5.3 在 helper 中添加 Facebook status() 函数。
- 1.5.4: 修复了 Facebook.Connect 中的错误,如果会话状态不稳定,将会出现空白屏幕。
- 1.5.5: 仅在初始化时修复 helper 使用,不再依赖于 Connect 组件。
- 1.6: 如果存在用户表但没有找到 facebook_id,Facebook.Connect 将更新用户表。
- 1.6.1: Facebook::share 现在如果未传递 URL,将正确设置起始 URL。
- 1.7.0: 更新到最新版本的官方 Facebook PHP SDK,使一切更加面向未来(Theaxiom / https://www.kinspir.com)
- 1.7.1: 修复了 1.7.0 更新中的损坏测试。
- 2.0.0: 功能更新
- FacebookHelper::loader() 现在不再需要,已被弃用
- 如果检测到身份验证且没有找到已登录的 facebook_id,则将创建用户
- FacebookHelper::logout 重定向选项现在允许基于数组 cakephp URL
- 新功能
- FacebookHelper::like() 使用各种选项创建喜欢按钮
- FacebookHelper::activity() 使用各种选项创建活动流
- FacebookHelper::friendpile() 使用各种选项创建好友堆叠小部件
- FacebookHelper::recommendations() 使用各种选项创建推荐小部件
- 2.0.1: 新设置 ConnectComponent::createUser 布尔值。如果设置为 true(默认),在成功的 Facebook 登录后且未在用户表中找到 facebook_id,组件将尝试从 Auth 组件的反思中创建新用户。通过在设置 Connect 组件时传递 'createUser' => false 来关闭此功能。
- 2.0.2: 新增 helper 方法 getConfig() 可在 FacebookInfo 库中使用。使用此方法代替依赖其他来源加载的配置文件。
- 2.0.3: 更新 Facebook::share,允许使用 fbxml 选项而不是默认不使用 fbxml。如果页面加载了 facebook->init();,则 fbxml => true 是必需的。
- 2.1.0: 提高性能和新 Facebook::disconnect 函数。
- 2.1.1: 修复了一些小错误。
- 2.2.0: 更新 Facebook PHP SDK
- 2.3.0: 添加了新的 Facebook::likebox 来替换 Facebook::fanbox()
- 2.3.1: 安全更新:现在 Facebook 用户创建将生成随机密码。
- 2.4.0: 添加了三个身份验证回调:beforeFacebookSave、beforeFacebookLogin 和 afterFacebookLogin
- 2.4.1: 为插件添加了自定义区域设置。
- 2.4.2: 修复了一些小错误。
- 2.4.3: 修复了当 User primaryKey 不是 'id' 时重复的用户条目问题。
- 2.5.0: 优化和微调(特别感谢 https://github.com/bar)
- 为 FacebookHelper::init() 新增回调功能(页面刷新仍然是默认设置)。
- FacebookHelper::share() 更好,现在使用 Router 而不是环境和 $this->here
- 优化,将 __syncFacebookUser 移动到 Controller->beforeFilter() 之后,以便在需要时可以在 beforeFilter 中更改 $noAuth。
- 3.0.0: 升级到 Facebook PHP SDK v 3.1.1
- 3.0.1: 添加 CakePHP 2.0 支持
-
2.0 版本的 AuthComponent 已大幅重设计,使得 FacebookPlugin 所做的猜测工作变得很难实现
-
因此,如果您想通过数据库实现用户/身份验证集成,必须设置 Facebook 插件要交互的模型
-
您必须在定义 Facebook.Connect 组件时设置此设置
-
如果您未设置 'model' 键,则您的 Auth Model 与集成不会自动发生。
//Example AppController setup public $components = array('Session', 'Auth' => array( 'authenticate' => array( 'Form' => array( 'fields' => array('username' => 'email') ) ), 'authorize' => 'Controller' ), 'Facebook.Connect' => array('model' => 'User') );
-
- 3.1.0: 添加了新的 Facebook 社交功能(注册和发送)
- FacebookHelper::registration() 创建一个预先填充其 Facebook 信息的注册表单。
- ConnectComponent::registrationData() 是解析成功注册帖子到 Facebook 的有用快捷方式。
- FacebookHelper::sendbutton() 创建一个漂亮的发送按钮。
- 3.1.1: 将 Facebook PHP SDK 更新到最新版本。
- 3.1.2: 将 Facebook PHP SDK 更新到最新版本 v3.2.1。
- 3.1.3: 将 Facebook PHP SDK 更新到最新版本 v3.2.3。
关于插件
- 博客: http://www.webtechnick.com/blogs/view/229/CakePHP_Facebook_Plugin_Auth_Facebook_and_more
- 文档: http://projects.webtechnick.com/docs/facebook
- 实时演示: http://facebook.webtechnick.com
- 屏幕录像: http://tv.cakephp.org/video/webtechnick/2011/01/12/nick_baker_--_facebook_integration_with_cakephp
功能列表
- 通过 Facebook 实现全面的认证功能。Facebook 认证将与或没有用户登录系统一起工作。与 AuthComponent 建立的现有用户认证无缝工作 - 或者它可以作为您的主要认证系统。
- 以极大的便捷创建动态可定制的 Facebook 内容。
- 分享(让您的用户分享他们在您网站上找到的内容)
- 喜欢(让您的用户喜欢他们在您网站上找到的内容)
- 发送(让您的用户发送他们在您网站上找到的内容)
- 登录/登出(Facebook 用户可以单点登录和登出,无需注册)
- 注册(Facebook 用户可以使用其个人资料中的预先填充数据在您的应用程序中注册)
- 活动(允许用户显示您的应用程序和朋友的动态)
- 朋友堆(显示您应用程序的朋友)
- 推荐(根据当前页面显示推荐的 URL)
- 粉丝盒子(允许用户成为您应用程序的粉丝)
- 个人照片(显示登录用户的个人照片)
- 实时流(通过 Facebook 创建动态实时活动并通过您的网站提供访问权限)
- 评论(通过允许用户使用 Facebook 评论在您的网站的任何部分进行评论来与您的用户建立联系)
- 状态(显示用户的状态)
- 在任何地方访问完整的 Facebook API。使用内置的完全访问 Facebook API 来构建自定义内容
安装和设置
-
首先将仓库克隆到您的
app/Plugin/Facebook
目录git clone git://github.com/webtechnick/CakePHP-Facebook-Plugin.git app/Plugin/Facebook
-
在您的
app/Config/bootstrap.php
文件中加载插件//app/Config/bootstrap.php CakePlugin::load('Facebook');
安装完成后,如果您想使用除分享按钮之外的其他功能,您需要获取您的应用程序的 api_key 和 secret。
-
在此 URL 上创建一个 Facebook 应用程序: https://#/developers/createapp.php
-
一旦生成api_key和密钥,您需要创建一个文件
app/Config/facebook.php
。您可以在/Facebook/Config/facebook.php.example
中找到所需的示例及其布局。//app/Config/facebook.php $config = array( 'Facebook' => array( 'appId' => 'YOUR_APP_ID', 'apiKey' => 'YOUR_API_KEY', 'secret' => 'YOUR_SECRET', 'cookie' => true, 'locale' => 'en_US', ) );
使用方法
您可以根据需要使用所有或部分Facebook插件。至少,您可能需要使用Facebook Helper。
public $helpers = array('Facebook.Facebook');
如果您只想使用Facebook插件的分享功能,那么您已经完成了。
$this->Facebook->share('http://www.example.com/url_to_share'); //(default is the current page).
对于Facebook分享功能,不需要其他任何东西。然而,要使用更高级的功能,您需要稍微准备一下页面来处理fbxml标签。
编辑布局以利用高级 Facebook功能
- 在您的布局中,强烈建议您将
<html>
标签替换为<?php echo $this->Facebook->html(); ?>
这对于某些Facebook功能在IE中工作是必需的。 - 在页面底部包含
<?php echo $this->Facebook->init(); ?>
以加载Facebook JavaScript API,扫描您的页面以查找fbxml并将其替换为各种动态内容。
示例布局
<?php echo $this->Facebook->html(); ?>
<head>
<title><?php echo $title_for_layout ?></title>
</head>
<body>
<?php echo $content_for_layout; ?>
</body>
<?php echo $this->Facebook->init(); ?>
</html>
身份验证(Facebook Connect/Graph系统)
尽管名为Facebook Connect组件,但它立即利用了新的强大Facebook Graph API http://developers.facebook.com/docs/api
要使用此功能,您首先需要更新您的Facebook应用程序,包括应用程序URL的connect URL。这可以在Facebook应用程序设置中完成。https://#/developers/apps.php现在,您只需要将Facebook.Connect
组件添加到您的app_controller中。
public $components = array('Facebook.Connect');
就是这样。现在您可以接受Facebook身份验证了。
登录/注销按钮
创建登录按钮:Facebook->login() ?>
创建请求扩展权限的登录按钮(http://developers.facebook.com/docs/authentication/permissions)
<?php echo $this->Facebook->login(array('perms' => 'email,publish_stream')); ?>
创建注销按钮
<?php echo $this->Facebook->logout() ?>
每个按钮都有多个选项,请查看API以查看所有可用选项 http://projects.webtechnick.com/docs/facebook/default/FacebookHelper.html
注册表单
创建具有默认字段和宽度的注册表单。默认情况下,将内容发布到自身。
<?php echo $this->Facebook->registration(); ?>
创建自定义注册表单。
<?php echo $this->Facebook->registration(array(
'fields' => 'name,gender,location,email',
'width' => 600,
'redirect-uri' => 'http://www.example.com/process_facebook_registration'
)); ?>
处理注册数据。
要访问由您的注册用户发布的注册数据,请使用方便的ConnectComponent::registrationData()函数。
if($user = $this->Connect->registrationData()){
print_r($user);
}
使用$user中的数据来完成您的注册过程(保存新用户,查找/更新用户等)。
CakePHP身份验证 + Facebook.Connect
Facebook.Connect将与各种身份验证系统很好地协同工作。它与CakePHP AuthComponent具有几乎无缝的集成。
注意 由于CakePHP 2.0 AuthComponent的重大更新,ConnectComponent不再有 introspection 功能。为了让自动功能正常工作,您需要告诉Connect您存储用户数据模型的位置,如下所示:
//Example AppController.php components settup with FacebookConnect
public $components = array('Session',
'Auth' => array(
'authenticate' => array(
'Form' => array(
'fields' => array('username' => 'email')
)
),
'authorize' => 'Controller'
),
'Facebook.Connect' => array('model' => 'User')
);
要与CakePHP Auth集成,您需要修改您的用户表(或Auth组件使用的任何表)并添加一个新的字段 -> facebook_id
。
ALTER TABLE `users` ADD `facebook_id` BIGINT(20) UNSIGNED NOT NULL
由于您已经有了一个身份验证系统,注销步骤也需要从您的身份验证系统中注销用户。您可以通过将重定向传递到$facebook->logout()
来实现这一点,到您的系统的注销身份验证操作。
在这种情况下,如果您想显示注销按钮,应设置标签或img选项。
<?php echo $this->Facebook->logout(array('label' => 'Logout', 'redirect' => array('controller' => 'users', 'action' => 'logout'))); ?>
或者
<?php echo $this->Facebook->logout(array('redirect' => array('controller' => 'users', 'action' => 'logout'), 'img' => '/Facebook/img/facebook-logout.png')); ?>
这将退出Facebook认证,然后重定向到您的认证注销页面,以便您完成注销。
Facebook认证回调
有三种可用的回调函数,每个都在控制器中定义,并且使用它们是可选的。
-
beforeFacebookSave
处理用户保存到用户表中。如果返回false,创建将中断。//Add an email field to be saved along with creation. function beforeFacebookSave(){ $this->Connect->authUser['User']['email'] = $this->Connect->user('email'); return true; //Must return true or will not save. }
-
beforeFacebookLogin
处理在用户登录认证之前。function beforeFacebookLogin($user){ //Logic to happen before a facebook login }
-
afterFacebookLogin
在认证登录成功后处理所需的任何功能。function afterFacebookLogin(){ //Logic to happen after successful facebook login. $this->redirect('/custom_facebook_redirect'); }
高级辅助功能示例
<?php echo $this->Facebook->comments(); ?>
<?php echo $this->Facebook->picture($facebook_id); ?>
<?php echo $this->Facebook->recommendations(); ?>
<?php echo $this->Facebook->like(); ?>
<?php echo $this->Facebook->livestream(); ?>
<?php echo $this->Facebook->activity(); ?>
<?php echo $this->Facebook->friendpile(); ?>
Facebook API
您可以从应用程序的任何位置访问Facebook API。您首先需要包含API。
App::uses('FB', 'Facebook.Lib');
然后您可以实例化它,或者如果您正在运行PHP 5.3.x,您可以对其进行静态调用。
PHP版本 5.2.x
$Facebook = new FB();
$Facebook->api('/me');
PHP 5.3.x
FB::api('/me');
国际化
您可以通过辅助声明或通过config/facebook.php
配置文件(见文档顶部)设置插件的区域设置。
public $helpers = array('Facebook.Facebook' => array('locale' => 'en_US'));
Facebook区域设置:http://developers.facebook.com/docs/internationalization/
阅读文档
我鼓励您阅读此插件的文档和API,以查看每个功能的全部功能和选项。API在此:http://projects.webtechnick.com/docs/facebook/