我有这个json对象,我想得到access_token但它拒绝我不明白为什么。这是我想要access_token
的响应{
"access_token": "Alhq74lVl5GAOVAZrprOGSS1Gj73",
"expires_in": "3599"
}
这是代码
function generateToke() {
// $url = 'https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials';
$url = 'https://api.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
$credentials = base64_encode('qniogqzdbIskIQt9nxgxG1wSBkzgUqN0:XUjxWzQY3WTndqHh');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Basic ' . $credentials)); //setting a custom header
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$curl_response = curl_exec($curl);
$result = json_decode($curl_response);
$token = $result->access_token;
echo $token;
}
得到同样的错误
上面的代码仍在向我显示json,但我想只得到Alhq74lVl5GAOVAZrprOGSS1Gj73
答案 0 :(得分:1)
您没有访问结果对象的access_token
属性,而是尝试访问未定义变量$access_token;
中命名的属性。
所以只需删除$ -sign,它就会工作:
$token = $result->access_token;
此外,您缺少一个返回内容的curl选项:
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
如果未将此选项设置为true,则表示您未从curl_exec
调用中检索响应。
答案 1 :(得分:0)
变化:
$token = $result->$access_token;
To(access_token上没有$
):
$token = $result->access_token;
它没有用,因为PHP有一个名为variable variables的功能,你不小心使用了它。 PHP试图获得$access_token
的任何值的属性。例如。如果名为$access_token
的变量设置为helloworld
,则PHP将运行$result->helloworld
并将$access_token
替换为其值。