connect() 回调 onTokenIncorrect() 时怎么处理

connect() 回调 onTokenIncorrect() 时的正确处理方式
发布时间: 2019-11-04 16:11

回答:

connect 回调 onTokenIncorrect

可能原因:

1. App Key 和 token 不一致

   融云不支持终端直接获取 token,须通过 App Server 向融云 IM Server 请求 token,具体请参见融云即时通讯服务端文档注册用户(获取 Token)

   终端须检查本地设置的 App Key 是否与 App Server 端获取 token 的 App Key 一致。

   融云开发者后台,有接口可以检查 token 是否正确,路径为:开发者后台 -> 运营管理 -> 用户管理 ,以下是截图:

image.png

2. token 过期。 

   token 的有效期可以在开发者后台设置。

   路径为: 开发者后台 -> 服务管理 -> App Key ,以下是截图:

image.png


如果 token 有效期设置的是非永久,您应该在 connect() 回调onError() errorcode 为RC_CONN_TOKEN_INCORRECT (31004) 时,再次去您的服务器获取新的 token, 然后使用新 token 再次 connect(). 参考伪代码:

RongIMClient.connect("用户Token", new RongIMClient.ConnectCallback() {
    @Override
    public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus code) {
        //消息数据库打开,可以进入到主页面
    }

    @Override
    public void onSuccess(String s) {
        //连接成功
    }

    @Override
    public void onError(RongIMClient.ConnectionErrorCode errorCode) {
        if(errorCode.equals(RongIMClient.ConnectionErrorCode.RC_CONN_TOKEN_INCORRECT)) {
            //从 APP 服务获取新 token,并重连 (伪代码)
            AppServer.getUserToken(() --> RongIMClient.connect(newToken));
        } else {
            //无法连接 IM 服务器,请根据相应的错误码作出对应处理
        }
    }
})