我无法通过浏览器获得正确的响应,但通过命令行php完美地工作

时间:2014-02-23 04:43:58

标签: php json curl oauth-2.0

现在通过命令行运行,我得到了预期的JSON响应和成功的身份验证。 但是通过浏览器,我得到了错误。 编辑我可以验证并获取代码。如果我输入代码而不是变量,我可以从命令行获得响应。

还经过测试,能够对实际字符串进行子变量处理,并且仍然可以通过命令行进行身份验证,但不能通过浏览器进行身份验证。

function tokenRequest($clientId, $clientSecret, $code){

$url =  'https://www.strava.com/oauth/token?';
$oauthFields = array(
    'client_id' => $clientId,
    'client_secret' => $clientSecret,
    'code' => $code);

$parameters = '&' . http_build_query($oauthFields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url.$parameters);
curl_setopt($ch, CURLOPT_POST, count($oauthFieldsObject));
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$urlResponse = curl_exec($ch);


curl_close($ch);
return (json_decode($urlResponse));
}

预计是json响应,但在我的主页面上我解码它但没有任何显示。下面是尝试显示json数据的代码。

$token = tokenRequest($client_id, $client_secret, $codeUrl);
echo $token;
var_dump($token);

2 个答案:

答案 0 :(得分:0)

  1. 你必须查看他们使用的oauth版本
  2. 你的功能不够,你必须请求requestToken然后是accessToken,然后你必须请求用户数据才能正常工作
  3. 看这里:http://strava.github.io/api/v3/oauth/

答案 1 :(得分:0)

我已经弄明白了,我补充道:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);

因为它是一个https网站。