刷新 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);
}
});