登录

大约 4 分钟

登录

初始化 IM SDK 后,你需要首先调用接口登录。登录成功后,才能使用 IM 的功能。

用户注册

创建用户

即时通讯 IM 提供以下两种方式创建用户:

  1. 展开控制台左上角下拉框,选择需要开通即时通讯 IM 服务的项目。

  2. 点击左侧导航栏的全部产品

  3. 在下拉列表中找到即时通讯 IM 并点击。

  4. 即时通讯 IM 页面,进入运营管理标签页。

  5. 用户 页签下,点击创建IM用户

  6. 在弹出的对话框中,配置用户相关参数,点击确定

img

获取用户 token

创建用户后,在用户列表点击对应的用户的操作一栏中的更多,选择查看Token

在弹出的对话框中,可以查看用户 Token,也可以点击重新生成,生成用户 token。

img

在生产环境中,为了安全考虑,你需要部署 App Server 生成 Token,详见 Token 鉴权文档

主动登录

  1. 用户 ID + token 是更加安全的登录方式。

​ 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。

ChatClient.getInstance().loginWithToken(mAccount, mToken, new CallBack() {
    // 登录成功回调
    @Override
    public void onSuccess() {

    }

    // 登录失败回调,包含错误信息
    @Override
    public void onError(int code, String error) {

    }
});
  1. 用户 ID + 密码登录是传统的登录方式。用户 ID 和密码均由你的终端用户自行决定,密码需要符合密码规则要求
ChatClient.getInstance().login(mAccount, mPassword, new CallBack() {
    // 登录成功回调
    @Override
    public void onSuccess() {

    }

    // 登录失败回调,包含错误信息
    @Override
    public void onError(int code, String error) {

    }

});

自动登录

初始化时,你可以设置 ChatOptions#setAutoLogin 选项确定是否自动登录。如果设置为自动登录,则登录成功之后,后续初始化 SDK 时会自动登录。

自动登录期限默认为 30 天,即设置自动登录后,用户 30 天内可自动登录。若调整改期限,可联系环信商务。

不过,自动登录还取决于你设置的用户 token 或密码有效期,例如,用户 token 有效期为 24 小时,则用户在 24 小时后,需获取 token 重新登录。

获取当前登录的用户

你可以调用 ChatClient#getCurrentUser 方法获取当前登录用户的用户 ID。

获取登录状态

你可以调用 ChatClient#isLoggedIn 方法获取当前用户的登录状态。

退出登录

你可以调用 logout 方法退出登录。退出登录后,你不会再收到其他用户发送的消息。

同步方法:

ChatClient.getInstance().logout(true);

异步方法:

ChatClient.getInstance().logout(true, new CallBack() {

    @Override
    public void onSuccess() {

    }

    @Override
    public void onError(int code, String message) {

    }
});

提示

  1. 如果集成了 FCM 等第三方推送,logout 方法中 unbindToken 参数需设为 true,退出时会解绑设备 token,否则可能会出现退出了,还能收到消息推送通知的现象。 有时可能会遇到网络问题而解绑失败,app 处理时可以弹出提示框让用户选择,是否继续退出(弹出框提示继续退出能收到消息的风险),如果用户选择继续退出,传 false 再调用 logout 方法退出成功。当然也可以失败后还是返回退出成功,然后在后台起个线程不断调用 logout 方法直到成功。这样存在风险,即用户杀掉了 app,网络恢复后用户还会继续收到消息。

  2. 如果调用异步退出方法,在收到 onsuccess 回调后才能去调用 IM 相关方法,例如 loginWithToken

账号切换

若在 app 中从当前账号切换到其他账号,你需要首先调用 logout 方法登出,然后再调用 loginWithTokenlogin 方法登录。

多设备登录

除了单端单设备登录,即时通讯 IM 支持同一账号在多端的多个设备上登录。多设备登录时,若同端设备数量超过限制,新登录的设备会将之前登录的设备踢下线。

关于多设备登录场景中的设备数量限制、互踢策略以及信息同步,详见多设备登录文档

更多

登录被封禁账号的提示

声网控制台open in new window或调用 RESTful API 封禁用户账号后,若仍使用该账号登录,SDK会返回 "service is disabled"(305 错误), 可以根据用户这个返回值来进行相应的提示或者处理。

上次编辑于: