Skip to content

登录连接

应用客户端成功连接到服务器后,才能使用协作中台相关功能,包括即时通讯 SDK 的收发消息、文档、工作台等服务。服务端在收到客户端发起的连接请求后,会根据连接请求里携带的激活状态判断是否允许用户连接。

SSO登录

SSO授权码登录需要用户完成账号SSO认证配置,完成配置后,通过授权码登录接口传入授权码及应用ID进行登录会话的建立。

  1. 开发者需在企业后台完成 SSO 认证配置,获取得到 APP_ID。配置流程详见SSO 登录
  2. 用户从自身业务服务接口中获取 AUTH_CODE。注意 AUTH_CODE 具有时效性。

接口定义

kotlin
fun login(appId: String, authCode: String, callback: KIMCore.ActiveCallback)

参数说明

参数类型说明
authCodeString登录授权码,用户从自身业务服务接口中获取授权码 AUTH_CODE。注意 AUTH_CODE 通常具有时效性。
appIdString应用 Id,开发者需在企业后台完成 SSO 认证配置,获取得到 APP_ID。配置流程详见SSO 登录
callbackKIMCore.ActiveCallback结果回调

代码示例

kotlin
KIM.getControl().login(APP_ID, AUTH_CODE, callBack)

自动登录

自动登录一般用于账号已经登录过,下次重新启动APP后无需重新输入账号密码即可完成登录的场景。调用自动登录接口后,内部自动完成IM连接操作。如遇到上次未登录或账号失效,可通过注册addOnUserLogoutListener,见「退登监听」。

接口定义

kotlin
fun autoLogin()

代码示例

kotlin
KIM.getControl().autoLogin()

退出登录

调用退出登录接口进行账号退登操作,断开服务连接。当请求服务端成功后会清理登录会话缓存信息并执行成功回调,设备不再收到IM消息离线推送;请求失败时不会清理登录会话缓存信息,设备依然可以收到IM消息离线推送。

接口定义

kotlin
fun logout(callback: IOperationCallback?)

参数说明

参数类型说明
callbackIOperationCallback?回调

代码示例

kotlin
KIM.getControl().logout(object : IOperationCallback {
    override fun onSuccess() {
        log("logout success")
    }

    override fun onError(err: ErrorCode?) {
        log("logout, error = $err")
    }
})

强制退登

跟退登KIM.getControl().logout接口的区别是无论请求服务器是否成功都会清除本地登录会话缓存信息。多用于退登后是否请求成功都弹出登录页面重新登录的场景,不足是如果遇到无网络情况下退登失败,仍然会收到IM消息离线推送。

接口定义

kotlin
fun forceLogout(callback: IOperationCallback?)

参数说明

参数类型说明
callbackIOperationCallback?回调

代码示例

kotlin
KIM.getControl().forceLogout(object : IOperationCallback {
    override fun onSuccess() {
        log("logout success")
    }

    override fun onError(err: ErrorCode?) {
        log("logout, error = $err")
    }
})

监听退出状态

可通过注册代理及实现代理方法来监听自动登录时遇到上次未登录回调或账号异常退登回调。当监听到账号失效时,通常的操作是弹出登录页面重新登录。实现登录监听需要注册OnUserLogoutListener

接口定义

kotlin
fun addOnUserLogoutListener(owner: LifecycleOwner?, listener: OnUserLogoutListener)

参数说明

参数类型说明
ownerLifecycleOwner?生命周期
listenerOnUserLogoutListener回调

OnUserLogoutListener

方法参数返回值说明
onLogoutcontext: Contextreason: ErrorCode自动登录时遇到上次未登录或使用过程中发现账号失效时 会调用该回调方法。

代码示例

kotlin
KIM.getControl().addOnUserLogoutListener(null, object : Control.OnUserLogoutListener {
    override fun onLogout(context: Context, reason: ErrorCode) {
        log("onLogout")
        //清除缓存等
    }
})

错误码说明

错误码(reason)描述
CloseUserBlock用户被封禁
CloseUserKicked用户被踢下线
CloseUserLogout用户主动登出

监听登录状态

如果有监听连接状态的需求,可以通过接口实现监听。

建议在应用生命周期内设置,sdk 会自动维护回调。否则在不需要监听时,将设置的监听器移除。

添加登录监听器

接口定义

kotlin
fun addOnWebSocketStatusChangedListener(
    owner: LifecycleOwner?,
    listener: OnWebSocketStatusChangedListener
)

参数说明

参数类型说明
lifecyclerOwnerLifecycleOwner生命周期Owner,可空
listenerOnWebSocketStatusChangedListener监听器

代码示例

kotlin
KIM.getControl().addOnWebSocketStatusChangedListener(null, object : Control.OnWebSocketStatusChangedListener {
    override fun onConnecting() {
        WLog.log("[KIM], onWebSocketStatusChanged, onConnecting")
    }

    override fun onConnected() {
        WLog.log("[KIM], onWebSocketStatusChanged, onConnected")
    }

    override fun onReconnected() {
        WLog.log("[KIM], onWebSocketStatusChanged, onReconnected")
    }

    override fun onDisconnected(reason: String?) {
        WLog.log("[KIM], onWebSocketStatusChanged, onDisconnected, reason = $reason")
    }

})

移除登录监听器

主动移除 web socket状态变化监听,可以避免内存泄露,如果初始化监听器的时候未绑定生命周期owner,需要主动移除监听器。

接口定义

kotlin
fun removeOnWebSocketStatusChangedListener(listener: OnWebSocketStatusChangedListener)

参数说明

参数类型说明
listenerOnWebSocketStatusChangedListener监听器

附录:状态说明

当连接状态发生变化时,将当前的连接状态回调给开发者。各状态的具体说明请参考下表。状态名称定义在 com.kingsoft.kim.core.Constant 中

状态名称状态值说明
CONNECTING0连接中
DIS_CONNECT1断开连接
CONNECTED2连接成功

附录:连接错误码说明

部分错误码说明:

错误码(reason)描述
CloseUserBlock用户被封禁
CloseTokenInvalidtoken 无效
CloseAppKeyInvalidAPP_KEY 无效
CloseUserIdInvalid用户 id 无效
WPS+ConnectErrorWPS+服务连接失败