我在服务器端的控制台中没有收到响应。
我正在尝试使用 facebook API 连接服务器。遵循 PHP 与 Symfony 的最新 SDK 版本说明。
在我的文件中我有:
$userData = (new UserData())
->setEmails(array('[email protected]'))
->setPhones(array('12345678901', '14251234567'))
// ->setClientIpAddress($_SERVER['REMOTE_ADDR'])
// ->setClientUserAgent($_SERVER['HTTP_USER_AGENT'])
->setClientIpAddress('1.2.3.4')
->setClientUserAgent('test user agent')
->setFbc('fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890')
->setFbp('fb.1.1558571054389.1098115397');
$content = (new Content())
->setProductId('product123')
->setQuantity(1)
->setDeliveryCategory(DeliveryCategory::HOME_DELIVERY);
$customData = (new CustomData())
->setContents(array($content))
->setCurrency('usd')
->setValue(123.45);
$event = (new Event())
->setEventName('Purchase')
->setEventTime(time())
->setEventSourceUrl('http://jaspers-market.com/product/123')
->setUserData($userData)
->setCustomData($customData)
->setActionSource(ActionSource::WEBSITE);
$events = array();
$events[] = $event;
$request = (new EventRequest($pixelId))
->setEvents($events);
try {
$response = $request->execute();
print_r($response);
$this->logger->log('info', $message);
return $response;
} catch (\Exception $e) {
dump('Error: ' . $e->getMessage());
return ['error' => ['message' => $e->getMessage()]];
}
}
作为我控制台上的响应,我得到:
FacebookAds\CrashReporter : Enabled
curl \
-F 'data=[{"event_name":"Purchase","event_time":1695635579,"event_source_url":"http:\/\/jaspers-market.com\/product\/123","user_data":{"em":["8830eedd6c6b5ea97d181563a349476ca1bb25ace1f94b5c5e48d9cad727941b"],"ph":["254aa248acb47dd654ca3ea53f48c2c26d641d23d7e2e93a1ec56258df7674c4","6f4fcb9deaeadc8f9746ae76d97ce1239e98b404efe5da3ee0b7149740f89ad6"],"client_ip_address":"1.2.3.4","client_user_agent":"test user agent","fbc":"fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890","fbp":"fb.1.1558571054389.1098115397"},"custom_data":{"value":123.45,"currency":"usd","contents":[{"id":"product123","quantity":1,"delivery_category":"home_delivery"}]},"action_source":"website"}]' \
-F 'access_token={accessToken}' \
https://graph.facebook.com/v16.0/{pixelId}/events
FacebookAds\Object\ServerSide\EventResponse Object
(
[container:protected] => Array
(
[events_received] => 1
[messages] => Array
(
)
[fbtrace_id] => ARjZ6HzvkC8VgWQdyCykeag
[custom_endpoint_responses] =>
)
)
(为了隐私我已经删除了access_token和pixelId)
当我点击:https://graph.facebook.com/v16.0/{pixelId}/events
我收到此错误:`
{
"error":
{
"message": "(#200) Provide valid app ID",
"type": "OAuthException",
"code": 200,
"fbtrace_id": "AhIF5fXwnZhDozFekG1StnM"
}
}
为什么我在服务器端的控制台上没有收到该错误?
我正在关注文档:
require __DIR__ . '/vendor/autoload.php';
use FacebookAds\Api;
use FacebookAds\Logger\CurlLogger;
use FacebookAds\Object\ServerSide\ActionSource;
use FacebookAds\Object\ServerSide\Content;
use FacebookAds\Object\ServerSide\CustomData;
use FacebookAds\Object\ServerSide\DeliveryCategory;
use FacebookAds\Object\ServerSide\Event;
use FacebookAds\Object\ServerSide\EventRequest;
use FacebookAds\Object\ServerSide\UserData;
$access_token = '<ACCESS_TOKEN>';
$pixel_id = '<ADS_PIXEL_ID>';
$api = Api::init(null, null, $access_token);
$api->setLogger(new CurlLogger());
$user_data = (new UserData())
->setEmails(array('[email protected]'))
->setPhones(array('12345678901', '14251234567'))
// It is recommended to send Client IP and User Agent for Conversions API Events.
->setClientIpAddress($_SERVER['REMOTE_ADDR'])
->setClientUserAgent($_SERVER['HTTP_USER_AGENT'])
->setFbc('fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890')
->setFbp('fb.1.1558571054389.1098115397');
$content = (new Content())
->setProductId('product123')
->setQuantity(1)
->setDeliveryCategory(DeliveryCategory::HOME_DELIVERY);
$custom_data = (new CustomData())
->setContents(array($content))
->setCurrency('usd')
->setValue(123.45);
$event = (new Event())
->setEventName('Purchase')
->setEventTime(time())
->setEventSourceUrl('http://jaspers-market.com/product/123')
->setUserData($user_data)
->setCustomData($custom_data)
->setActionSource(ActionSource::WEBSITE);
$events = array();
array_push($events, $event);
$request = (new EventRequest($pixel_id))
->setEvents($events);
$response = $request->execute();
print_r($response);
自 2023 年 9 月中旬起,您用于活动的端点已不复存在。我不得不重新开发为慈善网站编写的插件,我设法与 Facebook 上的新页面合作。
您还使用过时的版本。最新版本是 v18(2023 年 10 月)。
多年来,Facebook 一直在将页面转换为“新页面”。完成后,“事件”API 端点将被完全删除并且不会返回。
这是我为让我的插件再次工作而所做的事情。您必须跳过几个圈。
使用 Graph API Explorer 生成页面访问令牌 https://developers.facebook.com/tools/explorer
使用资源管理器生成您的 API 端点 URL。
我使用 feed 端点来获取最后 10 篇帖子的列表(使用 pager 参数)。
curl -i -X GET \ "https://graph.facebook.com/v18.0/<your page ID goes here>/feed?access_token=<your access token here>"
返回帖子列表后,我(通过代码)搜索它们以找到属于事件的帖子。这些被标记为“故事”,通常包含“已添加事件”或类似的内容。
我创建了这些事件的数组,然后使用“事件”API 端点来查询每个事件。
curl -i -X GET \ "https://graph.facebook.com/v18.0/<your event ID here>?fields=name%2Cdescription%2Cstart_time%2Ccover&access_token=<your access token here>"
返回事件数据后,您可以用它做任何您想做的事情。我用它创建了一个包含所有事件信息的新数组。
希望有帮助!