Skip to content

登录连接

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

SSO 登录

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

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

接口定义

swift
func login(authCode: String, appId: String, complete: @escaping (_ success: Bool, _ error: KIMError?) -> Void)
Objective-C
- (void)loginWithAuthCode:(NSString *)authCode appId:(NSString *)appId complete:(void (^)(BOOL, KIMError *))complete;

参数说明

参数类型说明
authCodeString登录授权码,用户从自身业务服务接口中获取授权码 AUTH_CODE。注意 AUTH_CODE 通常具有时效性。
appIdString应用 Id,开发者需在企业后台完成 SSO 认证配置,获取得到 APP_ID。配置流程详见SSO 登录
complete(_ success: Bool, _ error: KIMError?) -> Void结果回调。
success: 是否成功;
error:错误信息,成功时为nil。

代码示例

swift
KIM.shared.login(authCode: authCode, appId: appId) { success, error in
    if success {
        // 登录成功
    } else {
        // 登录失败
    }
}
Objective-C
[KIM.shared loginWithAuthCode:authCode appId:appId complete:^(BOOL success, KIMError *error) {
    if (success) {
        // 登录成功
    } else {
        // 登录失败
    }
}];

自动登录

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

接口定义

swift
func autoLogin()
Objective-C
- (void)autoLogin

代码示例

swift
KIM.shared.autoLogin()
Objective-C
[KIM.shared autoLogin];

退出登录

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

接口定义

swift
func logout( complete: @escaping (_ success: Bool, _ error: KIMError?) -> Void)
Objective-C
- (void)logoutWithComplete:(void (^)(BOOL, KIMError *))complete

参数说明

参数类型说明
complete(_ success: Bool, _ error: Error?) -> Voidsuccess: 退出登录是否成功
error:错误结果,成功时为nil

代码示例

swift
KIM.shared.logout{ success, error in
    if success {
        // 退登成功,弹出登录界面
    } else {
        // 退登失败,请重试
    }
}
Objective-C
 [KIM.shared logoutWithComplete:^(BOOL success, NSError *error) {
        if success == YES {
            // 退登成功,弹出登录界面
        } else {
            // 退登失败,请重试
        }
  }];

强制退登

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

接口定义

swift
func forceLogout(complete: (() -> Void)? = nil)
Objective-C
- (void)forceLogoutWithComplete:(void (^)(void))complete

代码示例

swift
KIM.shared.forceLogout{

}
Objective-C
[KIM.shared forceLogoutWithComplete:^{

}];

监听登录状态

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

接口定义

swift
func addLogoutListener(logoutDelegate: KIMLogoutDelegate)
Objective-C
- (void)addLogoutListenerWithLogoutDelegate:(id <KIMLogoutDelegate>)logoutDelegate

参数说明

参数类型说明
logoutDelegateKIMLogoutDelegate登录状态代理

KIMLogoutDelegate说明:

方法参数说明
func didLogout(reason: KIMError)reason 方法回调原因,可对比错误码得到具体信息。自动登录时遇到上次未登录 或 使用过程中发现账号失效时 会调用该回调方法。

代码示例

  1. 注册登录状态监听。
swift
KIM.shared.addLogoutListener(logoutDelegate: self)
Objective-C
[KIM.shared addLogoutListenerWithLogoutDelegate:self];
  1. 实现 KIMLogoutDelegate 代理方法。
swift
func didLogout(reason: KIMError) {
   if reason.code == KIMErrorCode.userHasNotLogin.rawValue {
        // 自动登录失败
   } else {
       // 其他账号失效退登情况,如账号被踢
   }
}
Objective-C
- (void)didLogoutWithReason:(KIMError *)reason {
    if (reason.code == KIMErrorCodeUserHasNotLogin) {
        // 自动登录失败
    } else {
        // 其他账号失效退登情况,如账号被踢
    }
}