emgiezet/faceboo

此包已被废弃,不再维护。未建议替代包。

Faceboo

dev-master 2012-10-01 21:27 UTC

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")