签名规则

更新日期:2018-10-11 08:52:09

调用 /oauth/token 接口时需要对请求参数进行签名,服务器端会验证请求参数是否合法。


- 加密规则说明

    加密示例参数:app_id=20180101&grant_type=authorization_code&code=C155FF


   ① 所有请求参数按照字母先后顺序排列

        例如:将app_id,grant_type,code 排序为app_id,code,grant_type


   ② 把所有参数名和参数值进行拼装,参数值为空的不参与签名(红色为参数名)

        例如:app_id20180101codeC155FFgrant_typeauthorization_code


   ③ 拼装加密原始字符串,把appSecret拼装在字符串的两端(appSecret示例值:45B308)

        例如:45B308app_id20180101codeC155FFgrant_typeauthorization_code45B308


   ④ 使用MD5加密原始字符串,再转化成大写

        例如:strtoupper(md5('45B308app_id20180101codeC155FFgrant_typeauthorization_code45B308'));



- PHP签名函数示例代码

    /**
     * 生成签名
     * @param array $param 要参与签名的参数
     * @param string $secert app_secert
     * @return string
     */
    function build_signature($param, $secert) {
        if (empty($param)) {
            return '';
        }
        $arr = array_merge($param);
        ksort($arr);
        reset($arr);
        $str = '';
        // 排除参数值为空的
        foreach ($arr as $k => $v) {
            if ($v !== '' && trim($v) !== '') {
                $str .= $k.$v;
            }
        }
        return strtoupper(md5($secert.$str.$secert));
    }