Я программирование маркетинг-API для Facebook и бегу в следующее сообщение об ошибке:Facebook Marketing API, версия 2.8 ошибка, несмотря на 2,8 в composer.json
Fatal error: Uncaught exception
'FacebookAds\Http\Exception\AuthorizationException'
with message
'(#2635) You are calling a deprecated version of the Ads API.
Please update to the latest version: v2.8.'
in [MY FOLDER]/vendor/facebook/php-ads-sdk/src/FacebookAds/Http/Exception/RequestException.php:163
Вот файл [MY FOLDER]/composer.json
я использовал, чтобы установить SDKs:
{
"require": {
"facebook/php-sdk-v4" : "~5.0",
"facebook/php-ads-sdk": "2.8.*"
}
}
в папке приложения (который я загрузить на частный сервер, от /localhost/~[my user name]/[some directory]/
, далее именуемый [MY FOLDER]
) у меня есть два php
файлы index.php
и login-callback.php
, а также т он sdks (facebook & facebook-ads) находится в [MY FOLDER]/vendor
. Вот php
файлы:
Файл [MY FOLDER]/index.php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Facebook\Facebook;
session_start();
$fb = new Facebook([
'app_id' => '000000000000', // censored
'app_secret' => '000000000000', // censored
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['ads_management'];
$loginUrl = $helper->getLoginUrl('[MY FOLDER]/login-callback.php',$permissions);
?>
Файл [MY FOLDER]/login-callback.php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Facebook\Facebook;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Exceptions\FacebookSDKException;
use Facebook\Authentification\AccessToken;
use FacebookAds\Api;
use FacebookAds\Object\AdUser;
use FacebookAds\Object\Campaign;
date_default_timezone_set('GMT');
session_start();
$fb = new Facebook([
'app_id' => '000000000000', // censored
'app_secret' => '000000000000', // censored
]);
$helper = $fb->getRedirectLoginHelper();
$accessToken = $helper->getAccessToken();
// This is actually wrapped in a try-catch control group
// I have left it out for this question, as there are no problems
// in this respect and the clauses are really long.
Api::init(
$app_id,
$app_key,
$_SESSION['facebook_access_token']
);
$campaign = new Campaign('000000000000'); // censored
try {
$campaign->read(array(
CampaignFields::ID,
CampaignFields::NAME,
CampaignFields::OBJECTIVE,
));
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// error with Graph API
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// error with Facebook SDK
exit;
}
?>
Ошибка возникает при попытке вызова $campaign->read(array(···))
. SDK возвращает ошибку выше, вместе с отслеживанием:
Stack trace:
#0 [API-FOLDER]/Http/Client.php
(217): FacebookAds\Http\Exception\RequestException::create(Array, 400)
#1 [API-FOLDER]/Http/Request.php
(282): FacebookAds\Http\Client->sendRequest(Object(FacebookAds\Http\Request))
#2 [API-FOLDER]/Api.php
(152): FacebookAds\Http\Request->execute()
#3 [API-FOLDER]/Api.php
(194): FacebookAds\
in [API-FOLDER]/Http/Exception/RequestException.php
on line 163
Здесь [API-FOLDER]
= [MY FOLDER]/vendor/facebook/php-ads-sdk/src
.
Обращайте внимание на информацию: ... Реклама API. Обновите последнюю версию: v2.8. Но я сделал это. Может кто-нибудь, пожалуйста, скажите мне, что происходит на Земле?
Работа с состоянием вещей, после того, как в соответствии с инструкциями по установке SDK-на https://developers.facebook.com/docs/marketing-api/ sdks это не имеет никакого эффекта. Загрузив v2.8 SDK из GIT-Hub, добавление или удаление '' default_graph_version '=>' v2.8'' не имеет никакого эффекта. Вывод: инструкции по установке facebook являются ошибочными, нужно вручную загрузить SDK. – Thomas