triwinvendor/facebook-php-business-sdk
Composer 安装命令:
composer require triwinvendor/facebook-php-business-sdk
包简介
PHP SDK for Facebook Business
README 文档
README
Introduction
The Facebook Business SDK is a one-stop shop to help our partners better serve their businesses. Partners are using multiple Facebook API's to server the needs of their clients. Adopting all these API's and keeping them up to date across the various platforms can be time consuming and ultimately prohibitive. For this reason Facebook has developed the Business SDK bundling many of its APIs into one SDK to ease implementation and upkeep. The Business SDK is an upgraded version of the Marketing API SDK that includes the Marketing API as well as many Facebook APIs from different platforms such as Pages, Business Manager, Instagram, etc.
Quick Start
Business SDK Getting Started Guide
Pre-requisites
Register An App
To get started with the SDK, you must have an app registered on developers.facebook.com.
To manage the Marketing API, please visit your App Dashboard and add the Marketing API product to your app.
IMPORTANT: For security, it is recommended that you turn on 'App Secret Proof for Server API calls' in your app's Settings->Advanced page.
Obtain An Access Token
When someone connects with an app using Facebook Login and approves the request for permissions, the app obtains an access token that provides temporary, secure access to Facebook APIs.
An access token is an opaque string that identifies a User, app, or Page.
For example, to access the Marketing API, you need to generate a User access token
for your app and ask for the ads_management permission; to access Pages API,
you need to generate a Page access token for your app and ask for the manage_page permission.
Refer to our Access Token Guide to learn more.
For now, we can use the Graph Explorer to get an access token.
Installation
The Facebook Business SDK requires PHP 5.6 or greater.
Composer
The Facebook Business SDK uses composer to manage dependencies. Visit the composer documentation to learn how to install composer.
Add the following to your composer.json file:
{
"require": {
"facebook/php-business-sdk": "5.0.5"
}
}
then install it through composer:
php composer.phar install --no-dev
This SDK and its dependencies will be installed under ./vendor.
Alternatives
This repository is written following the psr-4 autoloading standard. Any psr-4 compatible autoloader can be used.
Usage
Api main class
The FacebookAds\Api object is the foundation of the Business SDK which encapsulates a FacebookAds\Session and is used to execute requests against the Graph API.
To instantiate an Api object you will need a valid access token:
use FacebookAds\Api; // Initialize a new Session and instantiate an Api object Api::init($app_id, $app_secret, $access_token); // The Api object is now available through singleton $api = Api::instance();
Once instantiated, the Api object will allow you to start making requests to the Graph API.
Fields names
Due to the high number of field names in the Graph API existing objects, in order to facilitate your code maintainability, enum-like classes are provided.
These files are stored under the FacebookAds/Object/Fields directory.
You can access object properties in the same manner you would usually do in php:
use FacebookAds\Object\AdAccount; $account = new AdAccount(); $account->name = 'My account name'; echo $account->name;
or using the enums:
use FacebookAds\Object\AdAccount; use FacebookAds\Object\Fields\AdAccountFields; $account = new AdAccount(); $account->{AdAccountFields::NAME} = 'My account name'; echo $account->{AdAccountFields::NAME};
Object classes
Facebook Ads entities are defined as classes under the FacebookAds/Object directory.
Read Objects
use FacebookAds\Object\AdAccount; $account = (new AdAccount($account_id))->getSelf();
For some objects, the Ads API doesn't return all available fields by default. The first argument of the object's read method is an array of field names to be requested.
use FacebookAds\Object\AdAccount; use FacebookAds\Object\Fields\AdAccountFields; $fields = array( AdAccountFields::ID, AdAccountFields::NAME, ); $account = (new AdAccount($account_id))->getSelf($fields);
Requesting an high number of fields may cause the response time to visibly increase, you should always request only the fields you really need.
Create Objects
use FacebookAds\Object\AdSet; use FacebookAds\Object\AdAccount; use FacebookAds\Object\Fields\AdSetFields; $account_id = 'act_123123'; $campaign_id = '123456'; $account = new AdAccount($account_id); $adset = $account->createAdSet( array(), array( AdSetFields::NAME => 'My Test AdSet', AdSetFields::CAMPAIGN_ID => campaign_id, AdSetFields::DAILY_BUDGET => 150, AdSetFields::START_TIME => (new \DateTime("+1 week"))->format(\DateTime::ISO8601), AdSetFields::END_TIME => (new \DateTime("+2 week"))->format(\DateTime::ISO8601), AdSetFields::BILLING_EVENT => 'IMPRESSIONS', AdSetFields::TARGETING => array('geo_locations' => array('countries' => array('US'))), AdSetFields::BID_AMOUNT => '1000', ) ); echo $adset->id;
Update Objects
use FacebookAds\Object\AdSet; use FacebookAds\Object\Fields\AdSetFields; $ad_set_id = '123456'; $set = new AdSet($ad_set_id); $fields = array( ); $params = array( AdSetFields::NAME => 'My new AdSet name', ); $set->updateSelf($fields, $params);
Delete Objects
use FacebookAds\Object\AdSet; $ad_set_id = '123456'; $set = new AdSet($ad_set_id); $set->deleteSelf();
Cursors
Since the release of the Facebook Graph API 2.0, pagination is handled through cursors.
Here cursors are defined as in \FacebookAds\Cursor. Cursors are generally returned from connection methods:
use FacebookAds\Object\AdAccount; use FacebookAds\Object\Fields\CampaignFields; $account = new AdAccount('<ACT_ID>'); $cursor = $account->getCampaigns(['id','name']); // Loop over objects foreach ($cursor as $campaign) { echo $campaign->{CampaignFields::NAME}.PHP_EOL; } // Access objects by index if ($cursor->count() > 0) { echo "The first campaign in the cursor is: ".$cursor[0]->{CampaignFields::NAME}.PHP_EOL; } // Fetch the next page $cursor->fetchAfter(); // New Objects will be appended to the cursor
Implicit Fetching
Whenever all object connected to a parent are required (carelessly from the number of HTTP requests) implicit fetching can help reducing the amount of code required. If cursor has Implicit Fetching enabled, while iterating (foreach, Cursor::next(), Cursor::prev()) the page end is reached, the SDK will automatically fetch and append a new page, until cursor end. Implicit Fetching will make you lose control of the number of HTTP request that will be sent and, for this reason, is disabled by default. Implicit Fetching can be enabled for a specific cursor:
$cursor->setUseImplicitFetch(true);
Or globally:
use FacebookAds\Cursor; Cursor::setDefaultUseImplicitFetch(true);
Reverse Iterations
Cursors are bi-directional, and can be iterated in reverse order:
use FacebookAds\Object\AbstractCrudObject; /** @var \FacebookAds\Cursor $cursor */ $cursor->setUseImplicitFetch(true); $cursor->end(); while ($cursor->valid()) { echo $cursor->current()->{AbstractCrudObject::FIELD_ID}.PHP_EOL; $cursor->prev(); }
Tests
The 'test' folder contains the test cases. These are logically divided in unit and integration tests. Integration tests require an active Facebook Ad Account, a Facebook Application and a valid Access Token.
Note: we are currently unable to securely and reliably run integration tests on a public CI system. Our integrations with Travis and Scrutinizer (including badges at the top of this file) include only unit tests.
Install dependencies
From the root folder run:
php composer.phar install --dev
Execute unit tests only
./vendor/bin/phpunit -c test/phpunit-travis.xml
To run tests individually (be sure not to be pointing to an integration test file):
./vendor/bin/phpunit -c test/phpunit-travis.xml path/to/class/file
Execute all tests (unit + integration)
Setup your integration config:
1 - Copy the config file template.
cp test/config.php.dist test/config.php
2 - Edit test/config.php with your informations.
Execute:
./vendor/bin/phpunit -c test/
To run tests individually:
./vendor/bin/phpunit -c test/ path/to/class/file
Debug
If this SDK is not working as expected, it may be either a SDK issue or API issue.
This can be identified by constructing a raw cURL request and seeing if the response is as expected
for example:
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Api; use FacebookAds\Object\AdAccount; Api::init($app_id, $app_secret, $access_token); $api = Api::instance(); use FacebookAds\Logger\CurlLogger; $api->setLogger(new CurlLogger()); $account = new AdAccount($account_id); $account->read(array('id'));
When running this code, this cURL request will be printed to the console as:
curl -G \
-d 'fields=id' \
-d 'access_token=<access_token>' \
https://graph.facebook.com/v3.1/<act_accountid>
SDK Codegen
Our SDK is autogenerated from SDK Codegen. If you want to learn more about how our SDK code is generated, please check this repository.
Issue
Since we want to handle bugs more efficiently, we've decided to close issue reporting in Github and move to our dedicated bug reporting channel. If you encounter a bug with Business SDK (PHP), please report the issue at our developer bug reporting channel.
triwinvendor/facebook-php-business-sdk 适用场景与选型建议
triwinvendor/facebook-php-business-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 23 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 09 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「page」 「facebook」 「sdk」 「instagram」 「business」 「ads」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 triwinvendor/facebook-php-business-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 triwinvendor/facebook-php-business-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 triwinvendor/facebook-php-business-sdk 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, based upon the foundations of progressive enhancement, which will add advanced interaction controls to any HTML table.
Plug-ins for DataTables
Simple Sharing generates social media share links within CP entry pages, allowing you to quickly & easily share entries.
This package helps you use bitwise enums in PHP and Laravel.
Magento 2 Social Login extension is designed for quick login to your Magento 2 store without procesing complex register steps
Contao 4 bundle for a Facebook login.
统计信息
- 总下载量: 23
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 16
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2022-09-28