跳转至

签名规则

API 调用签名规则

规则说明

本文档中所有请求融云服务端 API 接口的请求均使用此规则校验,以下不再重复说明。

每次请求 API 接口时,均需要提供 4 个 HTTP Request Header,具体如下:

名称 类型 说明
App-Key 或 RC-App-Key String 开发者平台分配的 App Key。
Nonce 或 RC-Nonce String 随机数,无长度限制。
Timestamp 或 RC-Timestamp String 时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数。
Signature 或 RC-Signature String 数据签名。

Signature (数据签名)计算方法:将系统分配的 App Secret、Nonce (随机数)、Timestamp (时间戳)三个字符串按先后顺序拼接成一个字符串并进行 SHA1 哈希计算。如果调用的数据签名验证失败,接口调用会返回 HTTP 状态码 401。其他状态码请参见状态码表

RC- 前缀的 HTTP Header 是为了适应某些 PaaS 平台(如 SAE)过滤特定 HTTP Header 的机制而考虑的,如果您使用这些平台时遇到问题,可以使用 RC- 前缀,一般情况下使用默认的 HTTP Header 即可。

生成示例

PHP 语言的代码示例:

// 重置随机数种子。
srand((double)microtime()*1000000);

$appSecret = 'Y1W2MeFwwwRxa0'; // 开发者平台分配的 App Secret。
$nonce = rand(); // 获取随机数。
$timestamp = time()*1000; // 获取时间戳(毫秒)。

$signature = sha1($appSecret.$nonce.$timestamp);

HTTP 请求示例:

POST /user/getToken.json HTTP/1.1
Host: api-cn.ronghub.com
App-Key: uwd1c0sxdlx2
Nonce: 14314
Timestamp: 1408710653000
Signature: 30be0bbca9c9b2e27578701e9fda2358a814c88f
Content-Type: application/x-www-form-urlencoded
Content-Length: 78

userId=jlk456j5&name=Ironman&portraitUri=http%3A%2F%2Fabc.com%2Fmyportrait.jpg

API 接收签名规则

规则说明

融云服务器向应用服务器推送数据(调用应用服务器接口)时会添加 3 个 GET 请求参数(在 URL 上添加的参数),具体如下:

名称 类型 说明
nonce String 随机数,无长度限制。
signTimestamp String 时间戳,从1970年1月1日0点0分0秒开始到现在的毫秒数。
signature String 数据签名。

Signature (数据签名)计算方法:将系统分配的 App Secret、Nonce (随机数)、signTimestamp (时间戳)三个字符串按先后顺序拼接成一个字符串并进行 SHA1 哈希计算。

校验示例

PHP 语言的代码示例:

$appSecret = 'Y1W2MeFwwwRxa0'; // 开发者平台分配的 App Secret。
$nonce = $_GET['nonce']; // 获取随机数。
$timestamp = $_GET['signTimestamp']; // 获取时间戳。
$signature = $_GET['signature']; // 获取数据签名。
$local_signature = sha1($appSecret.$nonce.$timestamp); // 生成本地签名。
if(strcmp($signature, $local_signature)===0){
	// TODO: 此处添加业务逻辑。
	echo 'OK';
} else {
	echo 'Error';
}