我正在尝试通过PHP cURL
向API发出请求$access_token = $tokens['access_token'];
$headers = array(
"Authorization: Bearer " . $access_token
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,env('USER_INFO'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_USERAGENT,'php');
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
$info = curl_getinfo($ch);
$userInfo = curl_exec($ch);
$userInfo = json_decode($userInfo, true);
dd($userInfo);
我一直回来了
{"sub":"acr:123;type=STAT","updated_at":1509463516,"name":"User","email":"user@email.com"}
1
如果我这样做
$userInfo = json_encode($userInfo, true);
我得到了
{"sub":"acr:123;type=STAT","updated_at":1509463516,"name":"User","email":"user@email.com"}
"true"
如何摆脱它下面的1
或true
,只获取JSON数据?
我需要传递 json_decode()的另一个参数吗?
如何继续进行调试?
我现在对任何建议持开放态度。
任何提示/建议/帮助都将非常感谢!
答案 0 :(得分:2)
设置CURLOPT_RETURNTRANSFER
卷曲选项。 curl_exec
只是在没有它的情况下返回true
,(回应响应,返回 true; see curl_exec return values)和{{1}是的。
如何进一步调试?
要试验的几件事:
删除json_decode(true)
和
$userInfo = json_decode($userInfo, true);
。如果未设置dd($userInfo);
选项,您仍应看到未解码的JSON,但不会看到CURLOPT_RETURNTRANSFER
或true
。
在1
之前添加另一个dd($userInfo);
。您会看到json_decode
实际返回的内容,这可能会帮助您消除curl_exec
这种奇怪行为的可能原因。
答案 1 :(得分:0)
以下行应该可以解决您的问题。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);