使用ajax获取萤石云的accessToken时,appKey和secret直接暴露在前端HTML代码中,且success返回的accessToken在异步的情况下,无法作为全局变量使用。为此,在后端中获取accessToken,是非常必要的。
$curl函数封装;//封装POST函数;
function posturl($url, $data)
{
//把数组形式的参数转为‘appkey=....&secret=...'这种形式;
$data = http_build_query($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
//输出结果;
return json_decode($output, true);
}
参数设置
//调用URL;
$url = "https://open.ys7.com/api/lapp/token/get";
//请求参数;
$data = ["appKey" => "bcb59***", "appSecret" => "a749326a19***"];
获取accessToken
//01.获取accessToken
$content = posturl($url, $data);
$accessToken = $content["data"]["accessToken"];
使用accessToken
//02.获取设备列表;
//调用URL;
$url1 = "https://open.ys7.com/api/lapp/device/list";
//请求参数;
$data1 = ["accessToken" => $accessToken];
$content1 = posturl($url1, $data1);
echo "";
var_dump($content1);
Done!