【问题标题】:Facebook Marketing API: You are calling a deprecated version of the Ads APIFacebook Marketing API:您正在调用已弃用的 Ads API 版本
【发布时间】:2021-09-16 15:03:36
【问题描述】:

在尝试使用 Facebook 营销 API 时,我收到错误消息“您正在调用已弃用的广告 API 版本。请更新到最新版本:v2.6。”即使在所有代码上我都使用 2.6 版。

这是我的代码:(我在 # 所在的位置得到了正确的值。

<!DOCTYPE HTML>

<html lang = "en">

<head>

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title> Home </title>

</head>

<body>

    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId      : '#',
          xfbml      : true,
          version    : 'v2.6'
        });
      };

      (function(d, s, id){
         var js, fjs = d.getElementsByTagName(s)[0];
         if (d.getElementById(id)) {return;}
         js = d.createElement(s); js.id = id;
         js.src = "//connect.facebook.net/en_US/sdk.js";
         fjs.parentNode.insertBefore(js, fjs);
       }(document, 'script', 'facebook-jssdk'));
    </script>

<?php

require_once('vendor/autoload.php');

use FacebookAds\Api;
use FacebookAds\Object\AdUser;
use FacebookAds\Object\AdAccount;

// Initialize a new Session and instanciate an Api object
Api::init("#", "#", "#");

// The Api object is now available trough singleton
$api = Api::instance();


$me = new AdUser('me');
$my_adaccount = $me->getAdAccounts()->current();

print_r($my_adaccount->getData());


?>

【问题讨论】:

  • 您在哪里看到此错误消息?您的 php 包 FacebookAds\Api 中的 API 调用可能已被弃用。
  • 作曲家对"require": { "facebook/php-ads-sdk": ????" }有什么作用?看起来您已经在 J​​S 中更改了它,但是问题中不清楚您正在加载的 PHP 类。
  • 当我加载包含脚本的索引 php 页面时,会看到错误消息。
  • 而 composer.json 文件是 { "require": { "facebook/php-sdk-v4" : "~5.0", "facebook/php-ads-sdk": "2.5.* " } }
  • 我认为问题出在我的 composer.json 文件上。代码“require”:{“facebook/php-ads-sdk”:}等需要在哪里?在项目根目录中的单独 composer.json 文件中,还是需要在 .vendor 文件夹中的 composer.json 文件中?

标签: php facebook


【解决方案1】:

根据您的一个 cmets,您正在使用 facebook/php-ads-sdk 2.5 版。正如错误所述,您应该从 composer 更新到 2.6。

在项目的根目录上,更改 composer.json 的位置:

{
    "require": {
        "facebook/php-ads-sdk": "2.5.*"
    }
}

{
    "require": {
        "facebook/php-ads-sdk": "2.6.*"
    }
}

并通过删除您的供应商文件夹并重新运行 $ composer install 来重新安装您的依赖项以使用更新的依赖项拉取下载它。

您已在 JavaScript 中包含 v2.6,但这不会影响使用 PHP 完成的任何操作。

Github 上的 README 中的文档似乎已过时,但 there is an issue hinting that updating to 2.6 should solve the problem

【讨论】:

    【解决方案2】:

    您也可以使用 API 类(Api.php) 中的 setDefaultGraphVersion() 方法来设置要调用的 api 版本。

    <?php
    require_once('vendor/autoload.php');
    use FacebookAds\Api;
    use FacebookAds\Object\AdUser;
    use FacebookAds\Object\AdAccount;
    
    // Initialize a new Session and instanciate an Api object
    Api::init("#", "#", "#");
    
    // The Api object is now available trough singleton
    $api = Api::instance();
    $api->setDefaultGraphVersion("2.6");
    
    $me = new AdUser('me');
    $my_adaccount = $me->getAdAccounts()->current();
    print_r($my_adaccount->getData());
    ?>
    

    【讨论】:

      【解决方案3】:

      我在使用 java 访问 Facebook 营销 API 时也遇到了同样的问题。当时在manven仓库没有找到相关的jar包,而且github上的版本不是v12.0

      Github issue

      但是后来看到他们的jar版本升级到v12.0后,git克隆了一段代码,打包后放到自己的项目中。发现请求可以成功

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多