腾讯人脸核身-小程序

获取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;
}

 

posted @ 2020-10-09 14:50  孤陌  阅读(619)  评论(0编辑  收藏  举报