如何使用curl获取JSON响应

时间:2012-11-23 21:43:55

标签: php json curl

嘿,我开始学习foursquare API,但我仍然坚持获取Access Token。 这是我在SO中找到的代码的一部分。

        // build url
    $url = 'https://foursquare.com/oauth2/access_token';
    $url .= '?client_id='.CLIENT_ID;
    $url .= '&client_secret='.CLIENT_SECRET;
    $url .= '&grant_type=authorization_code';
    $url .= '&redirect_uri=**********/callback'; //change to your 4sq callback
    $url .= '&code='.$code;

    // call to https://foursquare.com/oauth2/access_token with $code
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    $result = curl_exec($ch);

然而这不起作用,所以我试图找到错误。首先回显$ url并手动点击该链接。它运作了,foursquare给了我一个json格式的访问令牌。所以问题在于代码的卷曲部分。

你能找到我的错误吗?更重要的是,你能给我一些研究卷曲的资源吗?

编辑: 我做了一个var_dump($ result),输出是'boolean false'

2 个答案:

答案 0 :(得分:6)

问题是http * s *,请尝试添加以下内容:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

答案 1 :(得分:2)

如果是POST请求,那么这是正确的方法:

$body.='client_id='.CLIENT_ID etc.
$c = curl_init ();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt ($c, CURLOPT_POST, true);
curl_setopt ($c, CURLOPT_POSTFIELDS, $body);
curl_setopt ($c, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec ($c);
curl_close ($c);