用户鉴权
鉴权是指在用户访问你的系统前,对其进行身份校验。用户在使用声网服务,如加入音视频通话或登录信令系统时,声网使用 Token 对其鉴权。
RTM 提供 Message Channel、User Channel 和 Stream Channel 三种频道类型,使用不同类型的频道,对应的 Token 类型也不同:
- 使用 Message Channel 或 User Channel:只需在调用
login
方法登录 RTM 系统时,传入开通了 RTM 服务的 Token(以下简称 RTM Token)。 - 使用 Stream Channel:在使用 RTM Token 鉴权的基础上,还需要在调用
join
方法加入 Stream Channel 时传入开通了 RTC 服务的 Token(以下简称 RTC Token)。
Token 的有效期最长为 24 小时,声网推荐你在 Token 过期前更新 Token。本文介绍如何更新 Token。
想要了解生成和使用 Token 的更多信息,可以查看:
IRtmClient::renewToken
接口描述
调用 IRtmClient::renewToken
方法更新 RTM Token。
为保证及时更新 Token,声网推荐你监听 onTokenPrivilegeWillExpire
回调,详见事件监听。成功添加事件监听后,当 RTM Token 还有 30 秒过期时,SDK 会触发 onTokenPrivilegeWillExpire
回调,提醒用户 Token 即将过期。收到该回调时,你可以在服务端重新生成 RTM Token,然后调用 renewToken
方法,将新生成的 RTM Token 传给 SDK。
接口方法
你可以通过以下方式调用 IRtmClient::renewToken
方法:
virtual void renewToken(const char* token, uint64_t& requestId) = 0;
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
token | string | 必填 | - | 新生成的 RTM Token。 |
requestId | uint64_t& | 必填 | - | (输出参数)请求标识符,后续用于识别和处理相应的请求。 |
异步回调
调用该方法后,SDK 会触发 onRenewTokenResult
回调并通过以下参数返回 API 调用结果:
参数 | 类型 | 描述 |
---|---|---|
requestId | const uint64_t | 请求标识符。 |
serverType | RTM_SERVICE_TYPE | 服务类型。详见 RTM_SERVICE_TYPE 。 |
channelName | const char* | 频道名称。 |
errorCode | RTM_ERROR_CODE | 错误码,详见错误排查。 |
基本用法
rtmClient->renewToken("your token");
IStreamChannel::renewToken
接口描述
调用 IStreamChannel::renewToken
方法更新 RTC Token。
为保证及时更新 Token,声网推荐你监听 onTokenPrivilegeWillExpire
回调,详见事件监听。成功添加事件监听后,当 RTC Token 还有 30 秒过期时,SDK 会触发 onTokenPrivilegeWillExpire
回调,提醒用户 Token 即将过期。收到该回调时,你可以在服务端重新生成 RTC Token,然后调用 renewToken
方法,将新生成的 RTC Token 传给 SDK。
接口方法
你可以通过以下方式调用 IStreamChannel::renewToken
方法:
virtual void renewToken(const char* token, uint64_t& requestId) = 0;
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
token | string | 必填 | - | 新生成的 RTC Token。 |
requestId | uint64_t& | 必填 | - | (输出参数)请求标识符,后续用于识别和处理相应的请求。 |
异步回调
调用该方法后,SDK 会触发 onRenewTokenResult
回调并通过以下参数返回 API 调用结果:
参数 | 类型 | 描述 |
---|---|---|
requestId | const uint64_t | 请求标识符。 |
serverType | RTM_SERVICE_TYPE | 服务类型。详见 RTM_SERVICE_TYPE 。 |
channelName | const char* | 频道名称。 |
errorCode | RTM_ERROR_CODE | 错误码,详见错误排查。 |
基本用法
uint64_t requestId;
streamChannel->renewToken("your token", requestId);