问题描述
我正在尝试使用 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。
更新:
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 生成。
要求:
- 使用页面
<PAGE_ID>
的页面访问令牌(不是您自己的用户令牌或任何其他页面)。 - 向您连接的 FB 应用授予
pages_show_list
、pages_read_engagement
和pages_manage_ads
权限(以获取页面访问令牌)。