第一次是由 PHPCurl的GET请求返回结果,
第二次用相同的URL,人工浏览器请求。
效果不一样
public function query()
{
$code=$this->code;
$url='https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id='.$this->app_id.'&client_secret='.$this->secret.'&code='.$code.'&redirect_uri='.urlencode($this->oauth_redirect_uri);
echo '请求接口:'.htmlspecialchars($url);
$result= $this->curl($url,null);
echo "<br>".'请求结果:'.$result;
if(strpos('access_token=',$result)===false)
{
return ['errorcode'=>1,'errormsg'=>'无效的接口返回'];
}
$access_token=substr($result,strlen('access_token=')-1,strpos('&',$result));
echo $access_token;
}
QQ的Oauth2.0接口不许接收POST,
上述动作中,curl设定了POST,虽然传入参数为NULL,但是应该是这个原因。导致QQ网关 拦截器层,并未进入逻辑层 直接返回一个结果
注意的坑:关闭curl的post,直接使用纯GET请求