将照片发布到Fousquare API V2

时间:2012-07-02 22:54:52

标签: php api curl foursquare

我正在尝试使用/ photos / add方法将照片发布到Foursquare API,而且我有点困难。我得到401(丢失的文件)或502(foursquare已关闭)。这是我的代码:

$ch = curl_init();

// file image name and it's located in the same folder

$image = "cupcakes.jpg";

// I've tried all of these and no luck   
$s = array("file" => "@".$image, "photo" => "@".$image, "image" => "@".$image);

// I've also tried to send raw data:
//curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($image));

$url = "https://api.foursquare.com/v2/photos/add?oauth_token=TOKENHERE&checknId=4fecf6abe4b0369bc7389903";

curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $s);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// image/jpeg type
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: image/jpeg"));

$result = curl_exec($ch);

$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

// I get either 502 / 401 (Foursquare is down or File is missing)
echo $result;

任何人都知道我做错了什么?端点的文档在这里:https://developer.foursquare.com/docs/photos/add - 特别是它意味着照片数据应该是POST请求的主体?

1 个答案:

答案 0 :(得分:1)

我已经修复了问题,原来你需要发送到foursquare的参数是“照片”。所有其他参数也必须包含在POST数组中。

即使内容类型被请求为“image / jpeg”,我只是输入“Except:”并且它工作正常。我不是百分之百确定为什么会这样,但确实如此。更新了以下代码:

  $s = array("photo" => "@".$image, "checkinId" => "4fecf6abe4b0369bc7389903");

  $url = "https://api.foursquare.com/v2/photos/add?oauth_token=TOKENHERE&v=20120609";
  .....

  curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:"));

其他一切都可以保持不变。快乐的帖子!