腾讯人脸核身-小程序
获取BizToken
/** * 人脸核身--getbiztoken * @return [type] [description] */ public function getbiztoken() { $secretKey = '你的secretKey'; $srcStr = 'GETfaceid.tencentcloudapi.com/?';//使用get方式获取 $param = [ "Action"=> 'DetectAuth',//默认 "Nonce"=> rand(1000,9999), //4位随机数 "SecretId"=>"你的SecretId", 'Region'=>'ap-beijing',//区域列表中选 "Timestamp"=> time(), //秒级时间戳 'RuleId'=>'0',//自己创建的RuleID "Token"=>'',//为空,不需要填 "Version"=>'2018-03-01'//默认,接口的版本号,不同的接口版本号不同 ]; ksort($param); //参数升序排序 $srcStr .= urldecode(http_build_query($param)); //参数变成action=DetectAuth&Nonce=1234的格式之后进行urlencode加密 //排序后连接字符串 生成签名 官网有验证签名的地方 签名不对的话 可以把时间戳和随机数写死之后校验 $sign = urlencode(base64_encode(hash_hmac('sha1', $srcStr, $secretKey, true)));//因为是使用get,所以使用sha1加密,这个是固定格式。 $url ='https://faceid.tencentcloudapi.com/?Action='.$param['Action'].'&Nonce='.$param['Nonce'].'&Region='.$param['Region'].'&RuleId='.$param['RuleId'].'&SecretId='.$param['SecretId'].'&Signature='.$sign.'&Timestamp='.$param['Timestamp'].'&Token=&Version='.$param['Version']; //个人认为可以使用http_build_query($param)直接只不过没试过。 $res = curlRequest($url); return $res; }
获取GetDetectinfo
/** * 人脸核身--GetDetectInfo * @return [type] [description] */ public function getdetectinfo() { $post = $this->request->param(); $BizToken = $post['biztoken'];//前端发过来的BizToken $secretKey = '你的secretKey'; $srcStr = 'GETfaceid.tencentcloudapi.com/?';// 使用get方式获取 $param = [ "Action"=> 'GetDetectInfo',//默认 "Nonce"=> rand(1000,9999), //4位随机数 "SecretId"=>"你的SecretId", 'Region'=>'ap-beijing',//区域列表中选 "Timestamp"=> time(), //秒级时间戳 "Token"=>'',//为空 "Version"=>'2018-03-01',//默认 'RuleId'=>'0',//自己创建的RuleID 'BizToken'=>$BizToken, 'InfoType'=>'1', //此处获取的是最佳人像截图,如果需要多处获取可以使用1234 ]; ksort($param); //参数升序排序 $srcStr .= urldecode(http_build_query($param)); //参数变成action=DetectAuth&Nonce=1234的格 //排序后连接字符串 生成签名 官网有验证签名的地方 签名不对的话 可以把时间戳和随机数写死之后校验 $sign = urlencode(base64_encode(hash_hmac('sha1', $srcStr, $secretKey, true)));//因为是使用get,所以使用sha1加密,这个是固定格式。 $url ='https://faceid.tencentcloudapi.com/?Action='.$param['Action'].'&Nonce='.$param['Nonce'].'&Region='.$param['Region'].'&RuleId='.$param['RuleId'].'&BizToken='.$param['BizToken'].'&InfoType='.$param['InfoType'].'&SecretId='.$param['SecretId'].'&Signature='.$sign.'&Timestamp='.$param['Timestamp'].'&Token=&Version='.$param['Version']; $res = curlRequest($url); $json_Array=json_decode($res, true); $json_Class=json_decode($json_Array['Response']['DetectInfo'],true); return json_success(0,'',$json_Class); }
CurlRequest Curl实现GET或POST 请求
/** * curl 请求链接 * @param [type] $url [description] * @param string $data 请求数据,为空时为get * @return [type] [description] */ function curlRequest($url,$data = ''){ $ch = curl_init(); $params[CURLOPT_URL] = $url; //请求url地址 $params[CURLOPT_HEADER] = false; //是否返回响应头信息 $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回 $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向 $params[CURLOPT_TIMEOUT] = 30; //超时时间 if(!empty($data)){ $params[CURLOPT_POST] = true; $params[CURLOPT_POSTFIELDS] = $data; } $params[CURLOPT_SSL_VERIFYPEER] = false;//请求https时设置,还有其他解决方案 $params[CURLOPT_SSL_VERIFYHOST] = false;//请求https时,其他方案查看其他博文 curl_setopt_array($ch, $params); //传入curl参数 $content = curl_exec($ch); //执行 curl_close($ch); //关闭连接 return $content; }