CloudHub 文档中心
下载中心 文档中心

RTC 实时音视频


RestAPI

token 签名规则

注:此签名由用户服务器端生成,不能直接放到客户端,否则影响安全性;

  1. 接口请求全部以 POST 提交 (不支持json格式提交);

  2. 请求参数里 app_id 值必传;

  3. 验证参数 token 生成规则 (此参数也必传);

    • 3.1 生成规则:md5(md5( app_id + BodyStr) + md5(SecretKey)).
    • 3.2 app_id : 可通过企业管理后台查找 APPID.
    • 3.3 BodyStr : POST 提交参数( token 后续生成追加,不在 bodyStr 内),将提交参数按照指定规则排序,然后将其生成一个字符串.
    • 3.4 SecretKey : 默认管理后台自动生成,后续客户可自行修改.

    下方贴出 PHP 生成 token 案例:token 生成后,将其放在 Post 提交参数里一起提交

<?php
    /**
     * 获取token
     * @param $postData   Post 提交参数
     * @param $appId        app_id  企业 app_id 值
     * @param $secretKey
     * @return string
     */
    function getToken($postData,$appId,$secretKey){
    // 剔除此2项,不进行字符串生成
        unset($postData['token']);
        unset($postData['app_id']);
        // 将Post 提交参数 生成一个字符串
        $bodyStr = $postData?getBodyStr($postData):'';
        // 生成规则 md5(企业key + bodyStr字符串 + 企业随机字符串);
        return md5(md5($appId.$bodyStr).md5($secretKey));
    }
    
    /**
     * [将对应不规则数组转成一个字符串]
     * @param  [type] $data [Post 提交参数]
     * @param  [type] $str  [description]
     * @return [type]       [description]
     */
    function getBodyStr($data, $str = '') {
        // 对数据键值进行排序
        ksort($data);
        foreach ($data as $key => $value) {
            if (is_array($value)) {
                if ($value) {
                    $str .= $key;
                    $str = getBodyStr($value, $str);
                }
            } else {
                if (($value || $value === 0 || $value === '0') && $value !== null && $value !== false && $value !== true) {
                    $str .= $key . $value;
                }
            }
        }
        return $str;
    }