( 最近更新时间:2020-04-28 19:00:00 )
# 访问域名
数据中心 | 访问域名地址 |
---|---|
国内数据中心 | api-cn.ronghub.com 或 api2-cn.ronghub.com |
新加坡数据中心 | api-sg01.ronghub.com |
针对国内数据中心,融云提供了 api-cn.ronghub.com 和 api2-cn.ronghub.com 两个域名,为避免因 CDN 服务商问题,导致访问融云 Server API 延时,对自身业务造成影响,建议开发者实现默认域名与备用域名的切换逻辑:
开发者调用融云 Server API 时,需要保存当前使用的域名。
调用过程中,如访问出现超时或不可用时,立即切换至另一备用域名进行访问,同时更新当前使用域名,如此循环,避免对业务造成影响。
注:针对国内数据中心的旧 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,具体如下:
名称 | 类型 | 说明 |
---|---|---|
App-Key 或 RC-App-Key | String | 开发者平台 (opens new window)分配的 App Key。 |
Nonce 或 RC-Nonce | String | 随机数,不超过 18 个字符。 |
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);
已复制
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
已复制
2
3
4
5
6
7
8
9
10
# API 接收签名规则
# 规则说明
融云服务器向应用服务器推送数据(调用应用服务器接口)时会添加 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'; }
已复制
2
3
4
5
6
7
8
9
10
11
# Server SDK
为了帮助广大开发者节约开发资源和时间,融云在 GitHub 上提供了一组开源的 Server SDK。开发者可选择适用的语言版本。
如果您可以开发其他语言的 Server SDK,并贡献到开源社区,欢迎通过提交工单 (opens new window)联系我们。
GitHub 项目如下:
- server-sdk-java (opens new window)
- server-sdk-nodejs (opens new window)
- server-sdk-php (opens new window)
相关文档,可参见 Server SDK API 文档 (opens new window)