美团云api签名调用方式

   public function hoslist(){
       /* $this->page=0;
        $this->display();
        exit;*/
        $key = 'bf9311f0619a4fc58f25a0bb4987fa69';
        $secret = '6040ecb369de4aa5b8ed53a860cacd5b';
        $time=urlencode(str_replace('+','.',date(DATE_ISO8601))."Z");
        $data=array('Format'=>'json','AWSAccessKeyId'=>$key,'Action'=>'DescribeInstanceTypes','SignatureVersion'=>2,'Timestamp'=>$time,'SignatureMethod'=>HmacSHA256);
        $strdata=$this->getSignature($data);
        $hashdata="POST\nmosapi.meituan.com\n/mcs/v1\n".$strdata;//组装签名参数
        $sign= urlencode(base64_encode( hash_hmac('sha256', $hashdata, $secret)));//获取签名
        $data['Signature']=$sign;
        $posturl="https://mosapi.meituan.com/mcs/v1?".$strdata."&Signature=".$sign;
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $posturl);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded' ,'Accept:text/plain'));//x-www-form-urlencoded编码
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//抓取跳转页面
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否获取跳转页面内容
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
        curl_setopt($curl, CURLOPT_HEADER, true);//返回请求head头
        curl_setopt($curl, CURLOPT_NOBODY, true);//返回请求结果内容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
        $data = curl_exec($curl);
        curl_close($curl);
        print_r($data);
    }

    /**
     * @efect:数组组装url字符串升序排序
     */
    function getSignature($data){
        ksort($data);//升序排序
        $strdata='';
        foreach ($data as $k => $v) {
            $strdata .= "&$k=$v";
        }
        $strdata=substr($strdata,1);
        return $strdata;
    }

上面是php调用美团云生成签名的方式,我把key替换成自己的始终显示403,有没有大神知道怎么调用


阅读 4.5k
2 个回答
新手上路,请多包涵
新手上路,请多包涵

能不能隐藏一下key/secret

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进