nixilla/facebook-api-consumer

在命名空间中,易于测试的PHP Facebook API消费者

0.2 2013-04-05 12:20 UTC

This package is auto-updated.

Last update: 2024-09-19 00:19:03 UTC


README

https://travis-ci.org/nixilla/facebook-api-consumer.png?branch=master

命名空间中,易于测试的PHP Facebook Graph API消费者,持续集成Travis CI。

安装

最简单的方法 - 通过 packagistcomposer

{
    "require": {
        "nixilla/facebook-api-consumer": "~0.1"
    }
}

它做什么?

这个库是Facebook Graph API的包装器,并且它提供了一些在Facebook集成应用中常用的一些工具方法。

它是如何做的?

这个库提供了一个Facebook\Consumer类,它是基于kriswallsmith/buzz库的高层次包装器。您只需指定您感兴趣的端点,它就会为您获取信息。

例如

<?php

require_once './vendor/autoload.php';

$client = new Buzz\Browser(new Buzz\Client\Curl());
$consumer = new Facebook\Consumer($client);

$consumer->setAccessToken('ACCESS_TOKEN_STRING');

$result = $consumer->call('/me/feed');

默认情况下,Facebook\Consumer将Facebook API的JSON输出转换为PHP数组。它是通过Facebook\DefaultConverter类来完成的。

然而,您可以改变这种行为,通过注入您的自定义转换器。您需要做的只是创建一个实现Facebook\Converter接口的转换器类,并将其注入到Facebook\Consumer中。

例如,如果您使用Symfony 2并且有AcmeDemoBundle:User类,并且您希望Facebook\Consumer输出该类,您需要

<?php

# src/Acme/DemoBundle/Converter/UserConverter.php
namespace Acme\DemoBundle\Converter;

use Facebook\Converter;
use Acme\DemoBundle\Entity\User;

class UserConverter implements Converter
{
    public function convert($json_string)
    {
        // do whatever you need to do, for example
        $user = new User()
        $user->fromArray(json_decode($json_string, true));

        return $user;
    }
}
<?php

# src/Acme/DemoBundle/Controller/UserController.php

namespace Acme\DemoBundle\Converter;

use Acme\DemoBundle\Converter\UserConverter;

class UserController extends Controller
{
    public function newAction(Request $request)
    {
        $consumer = $this->container->get('facebook.consumer');
        $consumer->setAccessToken($this->container->get('security.context')->getToken()->getAccessToken());
        $consumer->setConverter('/me', new UserConverter());

        $user = $consumer->call('/me');

        // you can now use it for forms
        $form = $this->createForm(new UserType(), $user);
    }
}