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

我无法通过浏览器获得正确的响应,但通过命令行php可以完美地工作,php,json,curl,oauth-2.0,Php,Json,Curl,Oauth 2.0,现在通过命令行运行,我得到了预期的JSON响应和成功的身份验证。 但是通过浏览器,我得到了错误编辑我能够验证并获取代码。如果输入代码而不是变量,则可以从命令行获得响应。 我还测试了实际字符串的子变量,并且仍然可以通过命令行而不是浏览器进行身份验证 function tokenRequest($clientId, $clientSecret, $code){ $url = 'https://www.strava.com/oauth/token?'; $oauthFields = array(

现在通过命令行运行,我得到了预期的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);
  • 您必须查看他们使用的oauth版本
  • 您的功能还不够,您必须先请求requestToken,然后请求accessToken,然后必须请求用户数据才能获得有效的证书

  • 看这里:

    我已经弄明白了,我添加了:

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

    因为它是一个https站点

    我可以通过命令行获取json数据,请参见上面的编辑。我已经翻了他们的API第页。(记住)好的,然后用$responseCode=curl\u getinfo($ch,CURLINFO\u HTTP\u代码)检查pls;返回响应的http状态代码添加:0sry使用此类型我讨厌此函数的类型我得到此返回对象(stdClass){1(2){[“message”]=>string(19)“Authorization Error”[“errors”]=>array(1){[0]=>object(stdClass){[“resource”]=>string(11)“Application”[“field”=>string(0)”[“code”=>string(7)“invalid”}}是,如果没有所需的数据,它将失败,因为我正在尝试授权。如果这些值被填入,我将得到'code'对象(stdClass){2(2){[“访问令牌”]=>string(40)”****************************[“运动员”]=>object(stdClass){[“id”]=>int(165762)[“资源状态”]=>int(3)[“名字”=>string(3)”***[“姓氏”=>