使用-G将cURL请求转换为PHP

时间:2016-02-08 19:54:22

标签: php facebook api curl webhooks

我尝试使用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;在命令行版本中意味着什么?

1 个答案:

答案 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>');