Java点播通用签名方法

一、userId、secretkey值的获取

QQ图片20160621165340
在点播播管理后台,点击API设置,在显示的页面中获取userId、secretkey值。

二、sign生成规则

将请求所需所有参数按照参数名字典顺序排列,连接参数名与参数值,并在首尾加上secretkey,生成SHA1加密值转大写,作为sign。

三、Java sign生成示例

public static String getSign(Map<String, String> maps, String secureKey) throws Exception {
        Long ptime = System.currentTimeMillis();
        maps.put("ptime", ptime.toString());
        List<String> keys = new ArrayList<>(maps.keySet());
        List<String> tmp = new ArrayList<>();
        Collections.sort(keys);
        for (String key : keys) {
            if (null != maps.get(key) && maps.get(key).length() > 0) {
                tmp.add(key + "=" + maps.get(key));
            }
        }
        String join = String.join("&", tmp) + secureKey;
        return getSha1(join).toUpperCase();
    }

    public static String getSha1(String input) throws NoSuchAlgorithmException {
        MessageDigest mDigest = MessageDigest.getInstance("SHA1");
        byte[] result = mDigest.digest(input.getBytes(StandardCharsets.UTF_8));
        StringBuilder sb = new StringBuilder();
        for (int b : result) {
            sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
        }
        return sb.toString();
    }
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

API调用签名

使用须知

保利威视的API接口默认不需要对接口调用做签名,如果需要签名访问,需要先在保利威视后台做个设置(注意:如果不需要签名访问,请勿在以下的位置勾选“是”,系统默认为“否”):QQ图片20160621165340
 

参数说明

设置需要接口签名之后,API接口提交参数需要带一个参数sign,sign是由提交的参数以及secretkey一起做sha1加密得来的。

 

调用示例

以下由上传视频接口为例,需要将提交给POLYV云平台的参数按指定序列和规则合并,再加上利用账号secretkey做sha1运算得到的一个40位的签名字符串作为参数sign,一起提交。如果sign没提交或者不匹配,系统会返回错误提示为error=22。

<?php
function uploadfile($title,$desc,$tag,$cataid,$filename) {
    $JSONRPC = '{"title":"'.$title.'","tag":"'.$tag.'","desc":"'.$desc.'"}';
    $writetoken = 'llIPXyhWzcjRrmW-dT11jFO40E4bDeZU';
    $secretkey = '7UagtQOq2A';
    $hash = sha1('cataid='.$cataid.'&JSONRPC='.$JSONRPC.'&writetoken='.$writetoken.$secretkey);
    //加上sign参数一起提交post
    $data = array(
        'JSONRPC' => $JSONRPC,
        'cataid'=>$cataid,
        'writetoken'=>$writetoken,
        'sign'=>$hash,
        'Filedata'=>new CURLFile(realpath($filename))
    );
    $uri = "http://v.polyv.net/uc/services/rest?method=uploadfile";
    $ch = curl_init() or die ( curl_error() );
    curl_setopt( $ch, CURLOPT_URL, $uri);
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 360);
    $reponse = curl_exec ( $ch );
    curl_close ( $ch );
    $reponse = json_decode($reponse);
    return $reponse;
}

$result = uploadfile('myTitle','myDesc','myTag',1,'E:\\1.mp4'); //cataid为1,表示用户上传空间的根目录
var_dump($result);
?>

 

整个API调用签名的过程

使用服务器端开发语言对这些参数按照规则排序后,再加上secretkey做sha1计算得到sign,然后把sign和API的其他上传参数一起提交到保利威视云平台。

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...