emgiezet / faceboo
此包已被废弃,不再维护。未建议替代包。
Faceboo
dev-master
2012-10-01 21:27 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2020-02-25 11:28:26 UTC
README
将Facebook SDK集成到Silex微框架(FacebookServiceProvider)或Symfony2(FacebooBundle)中。
提供几种方法来执行与Facebook相关的常见任务。
- 认证
- 权限管理
- 粉丝门管理
安装
Composer
-
修改您的composer.json
{ "repositories": { "faceboo": { "type": "package", "package": { "name": "faceboo", "version": "1.0", "source": { "url": "https://github.com/pitpit/Faceboo.git", "type": "git", "reference": "master" } } } }, "require": { ... } }
-
然后在composer.json的require部分添加以下行
"require": { "faceboo": "1.*" }
-
最后更新您的composer
$php composer.phar update
获取源代码
cd vendor
git clone https://github.com/dpitard/Faceboo.git faceboo
cd faceboo
git submodule update --init
参数
- app_id:您的应用ID
- secret:您的应用密钥
- permissions:需要访问应用的Facebook权限数组
- namespace:您的应用命名空间
- canvas:如果您的应用在Facebook iframe中运行,则为true
- proxy:使Facebook请求在非透明代理后工作
- timeout
- connect_timeout
- protect: true|false,在canvas模式下禁用访问服务器时的重定向
- class_path (silex仅限):定义另一个路径以到达Facebook PHP SDK
用法
Silex
在index.php顶部注册命名空间和扩展
$app['autoloader']->registerNamespace('Faceboo', __DIR__.'/../vendor/faceboo/src');
$app->register(new Faceboo\Provider\FacebookServiceProvider(), array(
'facebook.app_id' => 'YOUR_APP_ID'
));
参数格式为: facebook。
登录并请求用户权限(如有需要)
$app['facebook.permissions'] = array();
$app->match('/', function () use ($app) {
if ($response = $app['facebook']->auth()) return $response;
//...
});
在canvas模式下,保护您的canvas应用免受直接访问源服务器的访问
$app->before(function(Request $request) use ($app) {
if ($response = $app['facebook']->protect()) return $response;
});
* do not rely on it for security, it's based on HTTP_REFERER so it's not safe
在粉丝页面上,当前用户是否是粉丝页面的管理员
$app->match('/', function () use ($app) {
$isAdmin = $app['facebook']->isFanPageAdmin();
//...
}
* you need to define "secret" parameter
在粉丝页面上,粉丝页面的ID是什么
$app->match('/', function () use ($app) {
$pageId = $app['facebook']->getFanPageId();
//...
}
* you need to define "secret" parameter
在粉丝页面上,当前用户是否喜欢粉丝页面
$app->match('/', function () use ($app) {
$isFan = $app['facebook']->isFan();
//...
}
* you need to define "secret" parameter
获取当前Facebook用户ID
$app['facebook']->getUser();
调用Facebook API
$data = $app['facebook']->api('/me);
Symfony2
在app/autoload.php中注册自动加载
$loader->registerNamespaces(array(
//...
'Faceboo' => __DIR__.'/../vendor/faceboo/src'
));
//...
require_once __DIR__.'/../. /vendor/php-sdk/src/facebook.php';
在app/AppKernel.php中注册bundle
$bundles = array(
//...
new Faceboo\FacebookBundle\FacebooFacebookBundle(),
);
在app/config/config.yml中添加以下内容
faceboo_facebook:
app_id: 297720976910223
secret: b151a27351e91dab2ee18986d8c47052
参数
- facebook.app_id:您的应用ID
- facebook.secret:您的应用密钥
- facebook.permissions:需要访问应用的Facebook权限数组
- facebook.namespace:您的应用命名空间
- facebook.canvas:如果您的应用在Facebook iframe中运行,则为true
- facebook.proxy:使Facebook请求在非透明代理后工作
- facebook.timeout
- facebook.connect_timeout
- facebook.protect: true|false,在canvas模式下禁用访问服务器时的重定向
- facebook.class_path:定义另一个路径以到达Facebook PHP SDK
登录并请求用户权限(如有需要)
public function indexAction()
{
if ($response = $this->get('facebook')->auth()) return $response;
//...
}
待办事项
- 在网站模式下开发权限授权
- 消除对SilexEvent的依赖以使其与Symfony一起工作
- 在canvas模式下,重写UrlGenerator以在调用generate()时使用$absolute = true生成canvas URL
- 粉丝页面
- 用户是否喜欢粉丝页面?
- 根据本地路由
变更日志
- 增加了对symfony的支持
- app_id和secret现在是必填项
- 更新到Silex的最新版本
- 更新了参数前缀(现在是"facebook")