API 格式和签名机制

2019-03-12 10:37:45
朱宝鑫
524
最后编辑:薛才杰 于 2019-05-05 14:04:46

API 格式

⚠️ 注:自喧喧2.5.5版本后, 变更了应用集成 API 接口xxbserver.com/api.php,将应用集成 API 接口并入x.php,之前的api.php已弃用!

第三方应用在请求喧喧数据时所调用的 API 的请求地址格式为:

/x.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 中的用户数据请求地址为:

/x.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'


发表评论
评论通过审核后显示。