客户端连接融云服务器时,遇到 TOKEN 错误逻辑处理
刷新 Secret 后,原 Secret 下生成的 Token 将失效无法连接服务器,这时,客户端连接融云服务器时,将会遇到 TOKEN 错误,代码中需要实现重新通过 App Server 向融云服务器请求新的 Token 的逻辑。
发布时间: 2017-11-21 11:58
回答:
刷新 Secret 后,原 Secret 下生成的 Token 将失效无法连接服务器,这时,客户端连接融云服务器时,将会遇到 TOKEN 错误,代码中需要实现重新通过 App Server 向融云服务器请求新的 Token 的逻辑,如下:
SDK 1.0:通过判断 TOKEN_INCORRECT 错误码,重新获取 Token 的逻辑
SDK 2.0:通过 onTokenIncorrect 回调方法实现重新获取 Token 的逻辑
Android 示例代码:
RongIM.connect(token, new RongIMClient.ConnectCallback() { /** * Token 错误,在线上环境下主要是因为 Token 已经过期,您需要向 App Server 重新请求一个新的 Token */ @Override public void onTokenIncorrect() { Log.d("LoginActivity", "--onTokenIncorrect"); } /** * 连接融云成功 * @param userid 当前 token */ @Override public void onSuccess(String userid) { Log.d("LoginActivity", "--onSuccess" + userid); } /** * 连接融云失败 * @param errorCode 错误码,可到官网 查看错误码对应的注释 */ @Override public void onError(RongIMClient.ErrorCode errorCode) { Log.d("LoginActivity", "--onError" + errorCode); } });
iOS 示例代码:
// 快速集成第二步,连接融云服务器 [[RCIM sharedRCIM] connectWithToken:RONGCLOUD_IM_USER_TOKEN success:^(NSString *userId) { // Connect 成功 } error:^(RCConnectErrorCode status) { // Connect 失败 } tokenIncorrect:^() { // Token 错误,在线上环境下主要是因为 Token 已经过期,您需要向 App Server 重新请求一个新的 Token }];
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); } });