更新时间: 2021-03-08

# 功能描述

Token代表一个用户在融云的唯一身份标识, 客户端在使用融云即时通讯实时音视频功能前必须连接融云服务器, 而每次连接融云服务器都需要向融云提交 Token 以便验证身份。

获取 Token 接口,是使用融云即时通讯或者实时音视频,都必须要调用的接口,也是开发者服务端 唯一必须要调用的接口。 获取 Token 即表示一个用户在融云完成注册,开发环境下注册用户上限为 100 个,生产环境下注册用户不超过 100 可免费使用,超过 100 需要开通 IM 商用版 (opens new window),达到上限时将返回错误码 2007。

# 获取流程

应用获取 Token 后,根据情况可选择在应用本地保留当前用户的 Token,同时还需要实现重新向服务器获取 Token 的代码逻辑,以避免 Token 失效,流程如下:

App -> App: 获取当前登录的 UserId App -> AppServer: 通过 UserId 请求 Token AppServer -> RongCloudServer: 通过 UserId 请求 Token RongCloudServer --> AppServer: 返回 Token AppServer -> AppServer: 数据库存储 Token AppServer --> App: 返回 Token App -> App: 本地存储 App -> RongCloudServer: 通过 connect 方法携带 Token 连接到聊天服务器

Token 有效期可在开发者后台进行配置,默认为永久有效。后续登录过程中,就不必再向融云请求 Token,由 App Server 直接提供之前保存过的 Token。

App -> AppServer: 通过当前录登 UserId 请求 Token AppServer --> App: 数据库获取 Token 后,返回 Token App -> RongCloudServer: 获取后通过 connect 方法附带 Token 连接到聊天服务器

如果您的 App 是免登录设计,也可以将 Token 保存在 App 本地(注意保证本地数据存储安全),直接登录。

App -> App: 获取当前登录的 UserId App --> App: 返回本地存储的 Token App -> RongCloudServer: 通过 connect 方法附带 Token 连接到聊天服务器

# 实现方法

# 功能接口

请求地址: https://数据中心域名/user/getToken.json

请求方法: POST

调用频率: 无限制

签名规则: 所有请求融云服务端 API 接口的请求均需要进行规则校验,详细请参考 通用 API 接口签名规则

# 参数说明

输入参数

参数 类型 必传 说明
userId String 请求的用户 Id,应用内唯一标识,重复的用户 Id 将被当作为同一用户,支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 64 字节。
name String 用户名称,最大长度 128 字节。用来在 Push 推送时显示用户的名称,重新获取 Token 传入新的名称后,将覆盖之前的用户名称。
portraitUri String 用户头像 URI,最大长度 1024 字节。
由于历史原因,部分版本server sdk中该字段为必填项,若不方便提供该字段,请升级server sdk 到最新版或者传一个固定字符即可,比如:"_"

返回结果

返回值 返回类型 说明
code Int 返回码,200 为正常。
token String 用户 Token,可以保存应用内,长度在 256 字节以内,Token 中携带 IM 服务动态导航地址,开发者不需要进行处理,正常使用即可。
userId String 用户 Id,与输入的用户 Id 相同。
# 代码示例

Request:

POST /user/getToken.json HTTP/1.1
Host: api-cn.ronghub.com
App-Key: uwd1c0sxdlx2
Nonce: 14314
Timestamp: 1408710653491
Signature: 45beb7cc7307889a8e711219a47b7cf6a5b000e8
Content-Type: application/x-www-form-urlencoded

userId=jlk456j5&name=Ironman&portraitUri=http%3A%2F%2Fabc.com%2Fmyportrait.jpg
已复制
1
2
3
4
5
6
7
8
9

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{"code":200, "userId":"jlk456j5", "token":"sfd9823ihufi"}
已复制
1
2
3
4

# 注意事项

1、融云不管理任何用户信息,用户的注册仅需通过用户 ID 交换 Token 即可。

2、同一个用户 ID,可以多次获取 Token,在有效期内都可以正常使用,Token 超过有效期后失效,需重新获取。

3、开发者后台刷新 App Secret 后,以前获取的 Token 失效,需要用新的 App Secret 生成签名,重新获取 Token。

4、注册用户,获取 Token 时,传输的名称(name)和 头像(portraitUri),仅为移动端远程推送提醒使用,如需变更名称和头像信息,可通过重新获取 Token 进行覆盖,也可通过更新用户信息的方法进行变更。

5、由于单聊只要知道接收方 userId,即可发送消息,强烈建议开发者注册用户时,不要使用连续的 userId,以防止被恶意利用。

文档是否解决您的问题 ?

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