php实现阿里云签名类
时间:2020-01-08
本文章向大家介绍php实现阿里云签名类,主要包括php实现阿里云签名类使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
<?php
namespace App\Library\Ali; 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-d\TH:i:s\Z'), ); //判断输入的参数是否为数组 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
原文地址:https://www.cnblogs.com/llkbk/p/12166501.html
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC