百度推送REST API 签名组织方法

百度云推送应该是现在推送领域的后起之秀了,做的不错,但是问题在于REST API设计的太复杂了...尤其是那个签名验证方法

复杂就复杂吧,还不给提供做好的接口,只能用户自己去拼了...


虽然这个页面http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/api中说的挺清楚的,还是会有一些误会,这里记录下来:


1、基础算法:

百度用了一个php代码作为例子:

/**
* $secret_key //应用的secret key
* $method //GET或POST
* $url url
* $arrContent //请求参数(包括GET和POST的所有参数,不含计算的sign)
* return $sign string
**/
function genSign($secret_key, $method, $url, $arrContent) {
    $gather = $method.$url;
    ksort($arrContent);
    foreach($arrContent as $key => $value) {
        $gather .= $key.'='.$value;
    }   
    $gather .= $secret_key;
    $sign = md5(urlencode($gather));
    return $sign;
}   
 
$secret_key = 'xxxxxxxx';//此处替换为应用的secret key
$method = 'POST';
$url = 'http://channel.api.duapp.com/rest/2.0/channel/channel';
$arrContent = array(
    'method'=>'token',
    'timestamp'=>1313293563,
    'expires'=>1313293565,
);  
$sign = genSign($secret_key, $method, $url, $arrContent);

2、注意事项

  • apikey也要加入这个array中,也就是说签名值的计算字符串中,包含apikey这一段
  • urlencode必须做
  • md5的结果为必须小写
现在大家应该可以调出来自己需要的结果了

你可能感兴趣的:(百度推送REST API 签名组织方法)