博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云视频直播的相关准本工作(验签)
阅读量:7112 次
发布时间:2019-06-28

本文共 2581 字,大约阅读时间需要 8 分钟。

简单说下 开发中遇到的坑。这里用到的是 阿里云的视频直播服务,其实坑还是挺多的。

阿里云手册里写了的我就不再赘述。直接上代码(基于tp3.2)

验签

/**     * 模拟GET     */    public  function httpsGet( $url, $post='',$json=true ) {        date_default_timezone_set("UTC");        $Timestamp =  date('c');        $Timestamp = explode('+',$Timestamp);        if( is_array( $post ) ){            $public = [                'Version'=>'2016-11-01',                'Format'=> 'json',                'AccessKeyId'=>$this->AccessKeyId,                'SignatureMethod'=>'HMAC-SHA1',                'Timestamp'=>$Timestamp[0].'Z',                'SignatureVersion'=>'1.0',                'SignatureNonce'=>$this->uuid(),            ];            $post = array_merge($public,$post);            $Signature = self::getSignature($post,$this->AccessKeySecret);            foreach( $post as $key => $value )            {                $param .= $key . '=' . $value . '&';            }            $param .='Signature='.$Signature;            $urls = $url . '?' .$param;        }else{            $urls = $url;        }        //初始化        $curl = curl_init();        //设置抓取的url        curl_setopt( $curl, CURLOPT_URL, $urls );        //设置获取的信息以文件流的形式返回,而不是直接输出。        curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );        curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );        curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, false );        //执行命令        $result = curl_exec($curl);        //获取服务器响应状态        $httpCode = curl_getinfo( $curl , CURLINFO_HTTP_CODE );        //关闭URL请求        curl_close($curl);        $result = json_decode( $result , true );        return $result;    }        public function getSignature($parameters, $access_key_secret){        ksort($parameters);        $StringToSign = 'GET&'.urlencode('/').'&';        $q_str = '';        foreach($parameters as  $key=>$kval){            $q_str .= urlencode($key).'='.urlencode($kval).'&';        }        $q_str = substr($q_str,0,-1);        $StringToSign .= urlencode($q_str);        $ok_url = urlencode(base64_encode(hash_hmac("sha1",$StringToSign,$access_key_secret.'&',true)));        return $ok_url;    }        public function uuid($prefix = '')    {        $chars = md5(uniqid(mt_rand(), true));        $uuid  = substr($chars,0,8) . '-';        $uuid .= substr($chars,8,4) . '-';        $uuid .= substr($chars,12,4) . '-';        $uuid .= substr($chars,16,4) . '-';        $uuid .= substr($chars,20,12);        return $prefix . $uuid;    }

获取验签的方法是个坑。我在阿里云下工单问出来demo的都是错的-.-

好在后来自己弄出来了

httpget 里面的 Timestamp参数也是个坑demo里面是拼接出来的(最开始以为函数能直接获取)。

最后 我在自己开发的时候 百度了很多,但是帮助并不 希望这些代码能帮到正在准备研究直播的你。。。

转载地址:http://qjwel.baihongyu.com/

你可能感兴趣的文章
创建git库
查看>>
数据库---数据库查询的各种子句
查看>>
细说浏览器特性检测(1)-jQuery1.4添加部分
查看>>
类的初始化
查看>>
ethereum/EIPs-1271 smart contract
查看>>
Lua函数之一
查看>>
常看本地是否安装Git和maven工具
查看>>
sql server统计字段的值在某些范围内中的个数
查看>>
C# Application.DoEvents() 处理队列消息,防界面假死。
查看>>
python基础===python实现截图
查看>>
Quartus中代码字体大小的调整方法
查看>>
win10 mstsc 远程,登录失败,账号限制
查看>>
Sharepoint用户权限迁移
查看>>
github学习心得
查看>>
Qt Charts 下的BarChart数据系列标签显示Bug
查看>>
Soap的错误小结
查看>>
GlassFish下手动部署JSF程序
查看>>
IIS报错:Exception from HRESULT: 0x8007000B解决方法
查看>>
隐身扫描服务信息
查看>>
Mac/Linux 常用命令
查看>>