• UIKit
  • SDK
  • 服务端 API
Chat/
SDK/
Web/
SDK
  • 集成 SDK
  • 初始化
  • 登录登出
  • 接口列表
  • 更新日志
  • 消息
    • 介绍
    • 发送消息
    • 接收消息
    • 历史消息
    • 转发消息
    • 修改消息
    • 删除消息
    • 清空消息
    • 撤回消息
    • 在线消息
    • 已读回执
    • 查询消息
    • 群定向消息
    • 消息免打扰
    • 消息扩展
    • 消息翻译
  • 会话
    • 介绍
    • 会话列表
    • 获取会话
    • 会话未读数
    • 置顶会话
    • 删除会话
    • 会话标记
    • 会话分组
  • 群组
    • 介绍
    • 管理群组
    • 群资料
    • 管理群成员
    • 群成员资料
    • 自定义属性
    • 群计数器
  • 社群话题
    • 管理社群
  • 用户
    • 用户资料
    • 用户状态
    • 管理好友
    • 好友列表
    • 黑名单
  • 开发指引
  • 控制台指南
    • 创建和升级应用
    • 基本配置
    • 功能配置
    • 账号管理
    • 群组管理
    • 回调配置
  • 产品介绍
    • 消息管理
      • 单聊消息
      • 消息存储
      • 离线推送
      • 群消息
      • 消息格式
    • 账号系统
      • 登陆验证
      • 在线状态管理
    • 群相关
      • 群组系统
      • 群组管理
    • 用户资料和关系链
      • 资料管理
      • 关系链管理
  • 购买指南
    • 计费概述
    • 价格中心
  • 错误码

登录登出

功能描述

用户登录 Chat SDK 才能正常收发消息,登录需要用户提供 UserID、UserSig 等信息,具体含义请参见 登录鉴权

登录

注意
登录成功,需等待 SDK 处于 ready 状态后(监听事件 TencentCloudChat.EVENT.SDK_READY)才能调用 sendMessage 等需要鉴权的接口。
默认情况下,不支持多实例登录,即如果此账号已在其他页面登录,若继续在当前页面登录成功,有可能会将其他页面踢下线。用户被踢下线时会触发事件 TencentCloudChat.EVENT.KICKED_OUT,用户可在监听到事件后做相应处理。
如需支持多实例登录(允许在多个网页中同时登录同一账号),请到 Chat Console,找到相应 SDKAppID,点击 Application > Configuration > Login and Message > Login Settings > Max Login Instances per User per Platform 配置实例个数。配置将在50分钟内生效。
小程序、小游戏和 uni-app(即使打包成 native app) 平台集成,登录后都算作 web 实例。
如果此接口返回错误码 60020,意味着您未购买套餐包,或套餐包已过期,或购买的套餐包正在配置中暂未生效。请登录 Chat 购买页面 重新购买套餐包。购买后,将在5分钟后生效。
如果在小程序平台此接口返回错误码 2801,请您检查小程序受信域名配置。
接口
chat.login(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
名称
类型
描述
userID
String
用户 ID。
userSig
String
用户登录 Tencent Cloud Chat 的密码,其本质是对 UserID 等信息加密后得到的密文。具体生成方法请参见 生成 UserSig
返回值
Promise
示例
let promise = chat.login({userID: 'your userID', userSig: 'your userSig'});
promise.then(function(imResponse) {
console.log(imResponse.data); // 登录成功
if (imResponse.data.repeatLogin === true) {
// 标识账号已登录,本次登录操作为重复登录。
console.log(imResponse.data.errorInfo);
}
}).catch(function(imError) {
console.warn('login error:', imError); // 登录失败的相关信息
});

登出

登出 Chat SDK,通常在切换账号的时候调用,清除登录态以及内存中的所有数据。
注意
调用此接口的实例会发布 SDK_NOT_READY 事件,此时该实例下线,无法收、发消息。
如果您在 Chat Console 配置的“Web端实例同时在线个数”大于 1,且同一账号登录了a1和a2两个实例(含小程序端),当执行a1.logout()后,a1会下线,无法收、发消息。而a2实例不会受影响。
多实例被踢:基于第 2 点,如果“Web端实例同时在线个数”配置为 2,且您的某一账号已经登录了 a1,a2两个实例,当使用此账号成功登录第三个实例a3时,a1或a2中的一个实例会被踢下线(通常是最先处在登录态的实例会触发),这种情况称之为“多实例被踢”。假设a1实例被踢下线,a1实例内部会执行登出流程,然后抛出KICKED_OUT事件,接入侧可以监听此事件,并在触发时跳转到登录页。此时a1实例下线,而a2、a3实例可以正常运行。
接口
chat.logout();
参数
返回值
Promise
示例
let promise = chat.logout();
promise.then(function(imResponse) {
console.log(imResponse.data); // 登出成功
}).catch(function(imError) {
console.warn('logout error:', imError);
});

销毁

销毁 SDK 实例。SDK 会先 logout,然后断开 WebSocket 长连接,并释放资源。
接口
chat.destroy();
参数
返回值
Promise
示例
let promise = chat.destroy();

登录设置

默认情况下,SDK 不支持多实例登录,即如果此已在其他页面登录,若继续在当前页面登录成功,有可能会将其他页面踢下线。用户被踢下线时会触发事件TencentCloudChat.EVENT.KICKED_OUT,用户可在监听到事件后做相应处理。
注意:
1. 如需支持 Web 多实例登录(允许在多个网页中同时登录同一账号),请到 Chat Console,找到相应 SDKAppID,应用配置 > 功能配置 > 登录与消息 > Web 端可同时在线个数配置实例个数。配置将在50分钟内生效。
2. 默认情况下,每种平台只支持1个终端在线(如 Android 和 Android 会互踢)。如果需要使用“同平台多设备在线”功能,请 升级进阶版 ,详见 价格说明
let onKickedOut = function(event) {
console.log(event.data.type);
// TencentCloudChat.TYPES.KICKED_OUT_MULT_ACCOUNT(Web端,同一账号,多页面登录被踢)
// TencentCloudChat.TYPES.KICKED_OUT_MULT_DEVICE(同一账号,多端登录被踢)
// TencentCloudChat.TYPES.KICKED_OUT_USERSIG_EXPIRED(签名过期)
// TencentCloudChat.TYPES.KICKED_OUT_REST_API(REST API kick 接口踢出)
};

chat.on(TencentCloudChat.EVENT.KICKED_OUT, onKickedOut);