从 facebook API 获取所有线索广告

问题描述

我正在尝试使用 Facebook API 9.0 版在我的 PHP 脚本中获取所有潜在客户生成表单

我是这样提出请求的:

https://graph.facebook.com/v9.0/<PAGE_ID>/leadgen_forms?<access_token>

但是它返回错误,说

{
   "error": {
      "message": "(#12) leadgen_forms field is deprecated for versions v5.0 and higher","type": "OAuthException","code": 12,"fbtrace_id": "ARMp3WCko2raN5521458h"
   }
}

如果我更改上述请求中的版本,它会说:

您正在调用 Ads API 的弃用版本。请更新至 最新版本:v9.0。

更新:

这是我用来获取潜在客户生成表单的 SDK 功能

public function getLeadGenForms(array $fields = array('first_name','last_name'),array $params = array(),$pending = false) {
    $this->assureId();

    $param_types = array(
      'query' => 'string',);
    $enums = array(
    );

    $request = new ApiRequest(
      $this->api,$this->data['id'],RequestInterface::METHOD_GET,'/leadgen_forms',new LeadgenForm(),'EDGE',LeadgenForm::getFieldsEnum()->getValues(),new TypeChecker($param_types,$enums)
    );
    $request->addParams($params);
    $request->addFields($fields);
    return $pending ? $request : $request->execute();
  }

解决方法

这是正确的 GET 请求 URL:

https://graph.facebook.com/v9.0/<PAGE_ID>/leadgen_forms?access_token=<page_access_token>

以及使用 FB PHP SDK 的示例:

try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/<PAGE_ID>/leadgen_forms','{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

来源:从 Graph API Explorer 生成。

工作无错误响应的屏幕截图:enter image description here

要求:

  • 使用页面 <PAGE_ID>页面访问令牌(不是您自己的用户令牌或任何其他页面)。
  • 向您连接的 FB 应用授予 pages_show_listpages_read_engagementpages_manage_ads 权限(以获取页面访问令牌)。