适用于 PHP Symfony Graph API 的 Facebook API 集成 SDK

问题描述 投票:0回答:1

我在服务器端的控制台中没有收到响应。

我正在尝试使用 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);
php facebook symfony facebook-graph-api sdk
1个回答
0
投票

自 2023 年 9 月中旬起,您用于活动的端点已不复存在。我不得不重新开发为慈善网站编写的插件,我设法与 Facebook 上的新页面合作。

您还使用过时的版本。最新版本是 v18(2023 年 10 月)。

多年来,Facebook 一直在将页面转换为“新页面”。完成后,“事件”API 端点将被完全删除并且不会返回。

这是我为让我的插件再次工作而所做的事情。您必须跳过几个圈。

  1. 使用 Graph API Explorer 生成页面访问令牌 https://developers.facebook.com/tools/explorer

  2. 使用资源管理器生成您的 API 端点 URL。

  3. 我使用 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>"

  4. 返回帖子列表后,我(通过代码)搜索它们以找到属于事件的帖子。这些被标记为“故事”,通常包含“已添加事件”或类似的内容。

  5. 我创建了这些事件的数组,然后使用“事件”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>"

  6. 返回事件数据后,您可以用它做任何您想做的事情。我用它创建了一个包含所有事件信息的新数组。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.