zoukankan      html  css  js  c++  java
  • php实现阿里云签名类

    <?php
    namespace AppLibraryAli;
    class VideoInterface{
        public $data;
        public $accessKeyId = "---";
        public $accessKeySecret = "---";
        public $url;
    
        public function __construct($actionArray,$url){
            $this->url = $url;
            date_default_timezone_set("GMT");
            $this->data = array(
                // 公共参数
                'Format' => 'json',
                'Version' => '2017-03-21',
                'AccessKeyId' => $this->accessKeyId,
                'SignatureVersion' => '1.0',
                'SignatureMethod' => 'HMAC-SHA1',
                'SignatureNonce'=> uniqid(),
                'TimeStamp' => date('Y-m-dTH:i:s'),
            );
            //判断输入的参数是否为数组
            if(is_array($actionArray)){
                $this->data = array_merge($this->data,$actionArray);
            }
        }
    
        public function percentEncode($str)
        {
            // 使用urlencode编码后,将"+","*","%7E"做替换即满足ECS API规定的编码规范
            $res = urlencode($str);
            $res = preg_replace('/+/', '%20', $res);
            $res = preg_replace('/*/', '%2A', $res);
            $res = preg_replace('/%7E/', '~', $res);
            return $res;
        }
    
        public function computeSignature($parameters, $accessKeySecret)
        {
            // 将参数Key按字典顺序排序
            ksort($parameters);
            // 生成规范化请求字符串
            $canonicalizedQueryString = '';
            foreach($parameters as $key => $value)
            {
                $canonicalizedQueryString .= '&' . $this->percentEncode($key)
                    . '=' . $this->percentEncode($value);
            }
            // 生成用于计算签名的字符串 stringToSign
            $stringToSign = 'GET&%2F&' . $this->percentencode(substr($canonicalizedQueryString, 1));
            // 计算签名,注意accessKeySecret后面要加上字符'&'
            $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true));
            return $signature;
        }
    
        public function callInterface(){
            // 计算签名并把签名结果加入请求参数
            $this->data['Signature'] = $this->computeSignature($this->data, $this->accessKeySecret);
            // 发送请求
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $this->url . http_build_query($this->data));
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $res = curl_exec($ch);
            $res = json_decode($res);
            return $res;
        }
    }
    $arr = [
        "Action"=>"GetVideoPlayAuth",
        "VideoId"=>"---"
    ];
    $url = "http://vod.cn-shanghai.aliyuncs.com/?";
    $obj = new videoInterface($arr,$url);
    print_r($obj->callInterface());
    

      


    转自 https://blog.csdn.net/weixin_38422478/article/details/77750896

  • 相关阅读:
    Appium环境搭建(Mac版)
    html进阶css(1)
    HTML 表单与输出
    HTML 表格入门
    html图像入门
    LAMP_源码安装全教程
    构建高性能的MYSQL数据库系统-主从复制
    apache 服务器配制
    KickStart 无人值守安装系统
    zabbix 3.0 完全安装全解!
  • 原文地址:https://www.cnblogs.com/llkbk/p/12166501.html
Copyright © 2011-2022 走看看