当你的声网项目中不存在无证书并且启用了主要/次要证书,则表示你选择使用动态密钥 Token 对用户进行鉴权。
由于 Token 具有一定的时效性,因此 app 在运行过程中,你有可能会收到如下与 Token 相关的错误码或事件回调。本文对这些事件进行了梳理,提供触发的原因以及解决方法,帮助你在 App 出现异常时进行问题排查。
问题描述:
ERR_INVALID_APP_ID(101)
;或调用 joinChannel
方法加入频道时,SDK 回调 onError
事件,并报告错误码 ERR_INVALID_APP_ID(101)
。Client.join
方法加入频道时,Console 控制台打印错误码 ERR_INVALID_VENDOR_KEY(101)
。问题原因: 不是有效的 App ID,一般是由于 App ID 的数据类型不对引起的。
解决方法: 建议检查 App ID 数据格式是否有效。声网的 App ID 为 String 型,请使用正确数据类型的 App ID,重新初始化声网服务。
问题描述:
joinChannel
方法加入频道时,SDK 回调 onError
事件,并报告错误码 ERR_TOKEN_EXPIRED(109)
。Client.join
方法加入频道时,Console 控制台打印错误码 ERR_DYNAMIC_KEY_TIMEOUT(109)
或 ERR_DYNAMIC_KEY_EXPIRED(118)
。问题原因: Token 过期。
解决方法: Token 一旦过期,你就需要在服务端重新生成一个 Token,然后调用 renewToken
方法尝试重新加入频道。
问题描述:
joinChannel
方法加入频道时,SDK 回调 onError
事件,并报告错误码 ERR_INVALID_TOKEN(110)
。Client.join
方法加入频道时,Console 控制台打印错误码 ERR_NO_AUTHORIZED(110)
。问题原因: 生成的 Token 无效。一般有以下原因:
解决方法:
问题描述: Web 端调用 Client.join
方法加入频道时,Console 控制台打印错误码 ERR_STATIC_USE_DYNAMIC_KEY(119)
。
问题原因: 表示静态厂商使用了动态密钥。一般是由于使用的 App ID 对应的声网项目未启用主要/次要证书,却试图使用 Token 加入频道引起。
解决方法: 对于未开启主要/次要证书的项目,你可以不使用 Token 加入频道。你也可以先启用主要/次要证书,然后在服务端生成 Token 后重新加入频道。
问题描述: Web 端调用 Client.join
方法加入频道时,Console 控制台打印错误码 ERR_DYNAMIC_USE_STATIC_KEY(120)
。
问题原因: 表示动态厂商使用了静态密钥。一般是由于使用的 App ID 对应的声网项目中不存在无证书并且已启用主要/次要证书,加入频道时却没有传入 Token 引起。
解决方法: 如果 App ID 对应的项目中不存在无证书并且已启用主要/次要证书,则必须使用 Token 进行鉴权。你也可以换一个没有启用主要/次要证书的项目的 App ID,然后尝试重新加入频道。
为保证通信体验,声网提供如下两个回调,提醒用户 Token 即将过期或已经过期:
onTokenPrivilegeWillExpire
:该回调表示 Token 即将在 30 秒内失效。收到这个回调时,你需要在服务端重新生成 Token,然后调用 renewToken
方法,将新生成的 Token 传给 SDK。onRequestToken
(Web 平台为 onTokenPrivilegeDidExpire
):该回调表示 Token 已经失效。收到这个回调时,你需要在服务端重新生成 Token,然后调用 joinChannel
方法重新尝试加入频道。错误码 | Java/C++/C# | Objective-C | Javascript |
---|---|---|---|
101 | ERR_INVALID_APP_ID |
AgoraErrorCodeInvalidAppId |
ERR_INVALID_VENDOR_KEY |
109 | ERR_TOKEN_EXPIRED |
AgoraErrorCodeTokenExpired |
ERR_DYNAMIC_KEY_TIMEOUT |
110 | ERR_INVALID_TOKEN |
AgoraErrorCodeInvalidToken |
ERR_NO_AUTHORIZED |
2 | / | / | K_TIMESTAMP_EXPIRED |
118 | / | / | ERR_DYNAMIC_KEY_EXPIRED |
119 | / | / | ERR_STATIC_USE_DYNAMIC_KEY |
120 | / | / | ERR_DYNAMIC_USE_STATIC_KEY |