更新时间: 2021-03-30

# 集成提要

集成融云,无论即时通讯还是实时音视频, 服务端唯一必须要调用的接口只有注册用户(获取Token)一个, 其他内容根据需要,自行选择。

# 服务端 API 域名

数据中心 访问域名地址
国内数据中心 api-cn.ronghub.com 或 api2-cn.ronghub.com
新加坡数据中心 api-sg01.ronghub.com

针对国内数据中心,融云提供了 api-cn.ronghub.com 和 api2-cn.ronghub.com 两个域名,为避免因 CDN 服务商问题,导致访问融云 Server API 延时,对自身业务造成影响,建议开发者实现默认域名与备用域名的切换逻辑

  1. 开发者调用融云 Server API 时,需要保存当前使用的域名。

  2. 调用过程中,如访问出现超时或不可用时,立即切换至另一备用域名进行访问,同时更新当前使用域名,如此循环,避免对业务造成影响。

注:针对国内数据中心的旧 api.cn.ronghub.com 域名仍然可以使用,对开发者没有任何影响。

1、融云提供的 Server API 功能接口,必须通过 App Server 进行调用,不支持通过客户端直接调用。避免通过客户端直接调用融云 Server API 接口而引起的问题。

2、在调用 Server API 时,建议不使用 KeepAlive 方式,如有特殊情况需要使用 KeepAlive 建议在此基础上,每个 HTTP 连接使用建议小于 60 秒,断开重连,不要长期复用一个 HTTP 连接,长期使用会导致 API 负载均衡失效,影响故障转移策略。

# 签名规则

# API 调用签名规则
# 规则说明

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

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

名称 类型 说明
RC-App-Key String 开发者平台 (opens new window)分配的 App Key。
RC-Nonce String 随机数,不超过 18 个字符。
RC-Timestamp String 时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数。
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);
已复制
1
2
3
4
5
6
7
8

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
已复制
1
2
3
4
5
6
7
8
9
10
# 回调签名规则
# 规则说明

以下内容仅针对即时通讯相关回调服务有效,不包括实时音视频相关回调。

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

名称 类型 说明
nonce String 随机数,不超过 18 个字符。
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';
}
已复制
1
2
3
4
5
6
7
8
9
10
11

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助