用户鉴权
鉴权是指在用户访问你的系统前,对其进行身份校验。用户在使用声网服务,如加入音视频通话或登录信令系统时,声网使用 Token 对其鉴权。
RTM 提供 Message Channel 和 Stream Channel 两种频道类型,使用不同类型的频道,对应的 Token 类型也不同:
- 使用 Message Channel:只需在调用 
LoginAsync方法登录 RTM 系统时,传入开通了 RTM 服务的 Token(以下简称 RTM Token)。 - 使用 Stream Channel:在使用 RTM Token 鉴权的基础上,还需要在调用 
JoinAsync方法加入 Stream Channel 时传入开通了 RTC 服务的 Token(以下简称 RTC Token)。 
Token 的有效期最长为 24 小时,声网推荐你在 Token 过期前更新 Token。本文介绍如何更新 Token。
想要了解生成和使用 Token 的更多信息,可以查看:
IRtmClient::RenewTokenAsync
接口描述
调用 IRtmClient::RenewTokenAsync 方法更新 RTM Token。
为保证及时更新 Token,声网推荐你监听 OnTokenPrivilegeWillExpire 回调,详见事件监听。成功添加事件监听后,当 RTM Token 还有 30 秒过期时,SDK 会触发 OnTokenPrivilegeWillExpire 回调,提醒用户 Token 即将过期。收到该回调时,你可以在服务端重新生成 RTM Token,然后调用 RenewTokenAsync 方法,将新生成的 RTM Token 传给 SDK。
接口方法
你可以通过以下方式调用 IRtmClient::RenewTokenAsync 方法:
RtmResult<RenewTokenResult> RenewTokenAsync(string token);
| 参数 | 类型 | 是否必填 | 默认值 | 描述 | 
|---|---|---|---|---|
token | string | 必填 | - | 新生成的 RTM Token。 | 
基本用法
var result =  await rtmClient.RenewTokenAsync("your_token");
if (result.Status.Error)
{
    // 更新失败,处理报错
    Debug.Log(result.Status.ErrorCode);
}
else
{
    // 更新成功
}
返回值
IRtmClient::RenewTokenAsync 操作返回一个 RtmResult<RenewTokenResult> 类型数据结构的返回值,其中包含:
| 属性 | 类型 | 描述 | 
|---|---|---|
Status | RtmStatus | 无论操作是否成功,都返回一个 RtmStatus 类型的数据结构,其中包含本次操作的状态。 | 
Response | RenewTokenResult | 操作成功后,返回一个 RenewTokenResult 类型的数据结构,其中包含本次操作的执行结果。 | 
RtmStatus 包含以下属性:
| 属性 | 类型 | 描述 | 
|---|---|---|
Error | bool | 本次操作是否出错。 | 
ErrorCode | string | 错误码 | 
Operation | string | 本次操作类型。 | 
Reason | string | 本次操作出错原因。 | 
你可以通过检索 errorCode 字段的错误码了解错误原因,并找到对应的解决方法。
IStreamChannel::RenewTokenAsync
接口描述
调用 IStreamChannel::RenewTokenAsync 方法更新 RTC Token。
为保证及时更新 Token,声网推荐你监听 OnTokenPrivilegeWillExpire 回调,详见事件监听。成功添加事件监听后,当 RTC Token 还有 30 秒过期时,SDK 会触发 OnTokenPrivilegeWillExpire 回调,提醒用户 Token 即将过期。收到该回调时,你可以在服务端重新生成 RTC Token,然后调用 RenewTokenAsync 方法,将新生成的 RTC Token 传给 SDK。
接口方法
你可以通过以下方式调用 IStreamChannel::RenewTokenAsync 方法:
RtmResult<RenewTokenResult> RenewTokenAsync(string token);
| 参数 | 类型 | 是否必填 | 默认值 | 描述 | 
|---|---|---|---|---|
token | string | 必填 | - | 新生成的 RTC Token。 | 
resultCallback | ResultCallback<Void> | 必填 | - | 调用结果回调: 
  | 
基本用法
var result =  await streamChannel.RenewTokenAsync("your_token");
if (result.Status.Error)
{
    // 更新失败,处理报错
    Debug.Log(result.Status.ErrorCode);
}
else
{
    // 更新成功
}
返回值
IStreamChannel::RenewTokenAsync 操作返回一个 RtmResult<RenewTokenResult> 类型数据结构的返回值,其中包含:
| 属性 | 类型 | 描述 | 
|---|---|---|
Status | RtmStatus | 无论操作是否成功,都返回一个 RtmStatus 类型的数据结构,其中包含本次操作的状态。 | 
Response | RenewTokenResult | 操作成功后,返回一个 RenewTokenResult 类型的数据结构,其中包含本次操作的执行结果。 | 
RtmStatus 包含以下属性:
| 属性 | 类型 | 描述 | 
|---|---|---|
Error | bool | 本次操作是否出错。 | 
ErrorCode | string | 错误码 | 
Operation | string | 本次操作类型。 | 
Reason | string | 本次操作出错原因。 | 
你可以通过检索 errorCode 字段的错误码了解错误原因,并找到对应的解决方法。