我尝试使用this tutorial中详述的Facebook营销API。
但是我很难将这个建议的cURL命令行请求翻译成它的PHP等价物:
curl -G \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.5/<LEAD_ID>
我通常会这样做:
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$access_token);
$result = curl_exec($ch);
但是这会产生一个不受支持的帖子请求&#39;尝试运行它时出错。我想我误解了&#39; -G&#39;在命令行版本中意味着什么?
答案 0 :(得分:2)
来自man curl:
-G, - get
使用时,此选项将使用-d, - data, - data-binary或--data-urlencode指定的所有数据在HTTP GET请求中使用,而不是使用否则将使用的POST请求。数据将附加到带有'?'的URL分离器。
没有cURL option flag in PHP直接对应于此。你可以使用
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
或
curl_setopt($ch, CURLOPT_HTTPGET, 'GET');
但这几乎没必要:
CURLOPT_HTTPGET
TRUE 将HTTP请求方法重置为GET。由于GET是默认值,因此仅在请求方法已更改时才需要这样做。
您必须以不同方式指定请求参数:不是设置CURLOPT_POSTFIELDS
,而是将它们作为查询字符串附加到URL(如果需要,使用urlencode或等效的curl_escape):
curl_setopt( $ch, CURLOPT_URL, $url . '?accesstoken='.urlencode('<ACCESS_TOKEN>');