API 格式和签名机制
API 格式
第三方应用在请求喧喧数据时所调用的 API 的请求地址格式为:
/api.php?m=$moduleName&f=$methodName$params&code=$code&token=$token
以上请求地址格式中的变量定义如下:
$moduleName
:要调用的 API 所属模块名称,必须提供;$methodName
:要调用的 API 所属模块内的方法名称,如果缺省则为index
;$params
:要调用的 API 方法参数,如果没有参数可以留空,如果所调用的 API 方法有参数则将参数名和参数值通过通用网址查询字符串的形式插入到$params
所在位置,例如gid=XXX
;$code
:应用代号,必须提供;$token
:调用 API 时的数字签名。
例如获取讨论组 gid 为 64da14c3-c07a-45af-9c61-4e638de4af26
中的用户数据请求地址为:
/api.php?m=chat&f=getChatUsers&code=myAppCode&token=f5633c34c0c551a16c1d63bceb38d6a8
签名算法
API 请求地址中的数字签名 $token
应该在每次调用时根据应用集成密匙生成,具体算法为:
$token = md5(md5($query) + $key)
以上公式包含的变量定义如下:
$query
:请求地址中查询字符串(?
之后的部分)不包含&token=$token
的部分;$key
:应用密匙。
例如:
// 查询参数 var $query = 'm=chat&f=getChatUsers&code=myAppCode'; // 应用密匙 var $key = '3cd0914d656e90ab181f1d52ff352cfe'; // 计算签名字符串 var $token = md5(md5('m=chat&f=getChatUsers&code=myAppCode') + '3cd0914d656e90ab181f1d52ff352cfe'); // 这样 $token 的计算值为 'f5633c34c0c551a16c1d63bceb38d6a8'