
IM即时通讯
安全可靠、全球互通

实时音视频
流畅稳定、省钱省力
回答:
刷新 Secret 后,原 Secret 下生成的 Token 将失效无法连接服务器,这时,客户端连接融云服务器时,将会遇到 TOKEN 错误,代码中需要实现重新通过 App Server 向融云服务器请求新的 Token 的逻辑,如下:
SDK 1.0:通过判断 TOKEN_INCORRECT 错误码,重新获取 Token 的逻辑
SDK 2.0:通过 ERROR 回调方法判断是否是Token无效,实现重新获取 Token 的逻辑
Android 示例代码:
RongIM.connect(token, new RongIMClient.ConnectCallback() { @Override public void onSuccess(String t) { } @Override public void onError(RongIMClient.ConnectionErrorCode e) { if(e.equals(RongIMClient.ConnectionErrorCode.RC_CONN_TOKEN_INCORRECT)){//Token 无效 } } @Override public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus code) { } });
iOS 示例代码:
// 快速集成第二步,连接融云服务器 [[RCIM sharedRCIM] connectWithToken:@"开发者的 server 通过请求 server api 获取到的 token 值" timeLimit:5 dbOpened:^(RCDBErrorCode code) { //消息数据库打开,可以进入到主页面 } success:^(NSString *userId) { //连接成功 } error:^(RCConnectErrorCode status) { if (status == RC_CONN_TOKEN_INCORRECT) { //token 非法,从 APP 服务获取新 token,并重连 } else if(status == RC_CONNECT_TIMEOUT) { //连接超时,弹出提示,可以引导用户等待网络正常的时候再次点击进行连接 } else { //无法连接 IM 服务器,请根据相应的错误码作出对应处理 } }];
Web 代码示例:
RongIMClient.connect(token, { onSuccess: function(userId) { console.log("Connect successfully." + userId); }, onTokenIncorrect: function() { console.log('token无效'); // Token 错误,在线上环境下主要是因为 Token 已经过期,您需要向 App Server 重新请求一个新的 Token }, onError:function(errorCode){ var info = ''; switch (errorCode) { case RongIMLib.ErrorCode.TIMEOUT: info = '超时'; break; case RongIMLib.ErrorCode.UNKNOWN_ERROR: info = '未知错误'; break; case RongIMLib.ErrorCode.UNACCEPTABLE_PaROTOCOL_VERSION: info = '不可接受的协议版本'; break; case RongIMLib.ErrorCode.IDENTIFIER_REJECTED: info = 'appkey不正确'; break; case RongIMLib.ErrorCode.SERVER_UNAVAILABLE: info = '服务器不可用'; break; } console.log(errorCode); } });