SDK 文档

服务端 API

查询帐号在线状态

最近更新时间:2020-06-05 10:02:56

功能说明

获取用户当前的登录状态。

接口调用说明

请求 URL 示例

https://console.tim.qq.com/v4/openim/querystate?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json

请求参数说明

下表仅列出调用本接口时涉及修改的参数及其说明,更多参数详情请参考 REST API 简介

参数 说明
v4/openim/querystate 请求接口
sdkappid 创建应用时即时通信 IM 控制台分配的 SDKAppID
identifier 必须为 App 管理员帐号,更多详情请参见 App 管理员
usersig App 管理员帐号生成的签名,具体操作请参见 生成 UserSig
random 请输入随机的32位无符号整数,取值范围0 - 4294967295

最高调用频率

200次/秒。

请求包示例

无需获取详细的登录平台信息

{
    "To_Account": ["id1", "id2", "id3", "id4"]
}

需要获取详细的登录平台信息

{
    "IsNeedDetail": 1,
    "To_Account": ["id1", "id2", "id4"]
}

请求包字段说明

字段 类型 属性 说明
To_Account Array 必填 需要查询这些 UserID 的登录状态,一次最多查询500个 UserID 的状态
IsNeedDetail Integer 选填 是否需要返回详细的登录平台信息。0表示不需要,1表示需要

应答包体示例

无需获取详细的登录平台信息

{
    "ActionStatus": "OK",
    "ErrorInfo": "",
    "ErrorCode": 0,
    "QueryResult": [
        {
            "To_Account": "id1",
            "Status": "Offline"
        },
        {
            "To_Account": "id2",
            "Status": "Online"
        },
        {
            "To_Account": "id3",
            "Status": "PushOnline"
        }
    ],
    "ErrorList": [
        {
            "To_Account": "id4",
            "ErrorCode": 70107
        }
    ]    
}

需要获取详细的登录平台信息

{
    "ActionStatus": "OK",
    "ErrorInfo": "",
    "ErrorCode": 0,
    "QueryResult": [
        {
            "To_Account": "id1",
            "Status": "Online",
            "Detail": [
                {
                    "Platform": "iPhone",
                    "Status": "PushOnline"
                },
                {
                    "Platform": "Web",
                    "Status": "Online"
                }
            ]
        },
        {
            "To_Account": "id2",
            "Status": "Offline",
        }        
    ],
    "ErrorList": [
        {
            "To_Account": "id4",
            "ErrorCode": 70107
        }
    ]      
}

请求出错

{
    "ActionStatus": "FAIL",
    "ErrorInfo": "Fail to Parse json data of body, Please check it",
    "ErrorCode": 90001
}

应答包字段说明

字段 类型 说明
ActionStatus String 请求处理的结果,“OK” 表示处理成功,“FAIL” 表示失败
ErrorInfo String 详细错误信息
ErrorCode Integer 本次请求的错误码
  • 如有任意帐号查询状态成功,则此字段返回0
  • 全部帐号都查询失败,则此字段返回非0
  • QueryResult Array 返回的用户在线状态结构化信息
    QueryResult.To_Account String 返回的用户的 UserID
    QueryResult.Status String 返回的用户状态,目前支持的状态有:
    • 前台运行状态(Online):客户端登录后和即时通信 IM 后台有长连接
    • 后台运行状态(PushOnline):iOS 和 Android 进程被 kill 或因网络问题掉线,进入 PushOnline 状态,此时仍然可以接收消息的离线推送。客户端切到后台,但是进程未被手机操作系统 kill 掉时,此时状态仍是 Online
    • 未登录状态(Offline):客户端主动退出登录或者客户端自上一次登录起7天之内未登录过
    如果用户是多终端登录,则只要有一个终端的状态是 Online ,该字段值就是 Online
    QueryResult.Detail Object 详细的登录平台信息
    QueryResult.Detail.Platform String 登录的平台类型。可能的返回值有:"iPhone", "Android", "Web", "PC", "iPad", "Mac"。
    QueryResult.Detail.Status String 该登录平台的状态
    ErrorList Array 状态查询失败的帐号列表,在此列表中的目标帐号,状态查询失败或目标帐号不存在。若状态全部查询成功,则 ErrorList 为空
    ErrorList.To_Account String 状态查询失败的目标帐号
    ErrorList.ErrorCode Integer 状态查询失败的错误码,若目标帐号的错误码为70107,表示该帐号不存在
    注意:

    即时通信 IM 后台只会保存 PushOnline 状态7天时间,若从掉线时刻起7天之内未登录过,则进入 Offline 状态。

    错误码说明

    除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码、错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。
    公共错误码(60000到79999)参见 错误码 文档。
    本 API 私有错误码如下:

    错误码 含义说明
    70107 请求的用户帐号不存在
    70169 服务端内部超时,请稍后重试
    90001 JSON 格式解析失败,请检查请求包是否符合 JSON 规范。或者 To_Account 是空数组
    90003 JSON 格式请求包中 To_Account 不符合消息格式描述,请检查 To_Account 类型是否为 String
    90009 请求需要 App 管理员权限
    90011 批量发消息目标帐号超过500,请减少 To_Account 中目标帐号数量
    90992 后端服务超时,请重试
    90994 服务内部错误,请重试
    90995 服务内部错误,请重试
    91000 服务内部错误,请重试

    接口调试工具

    通过 REST API 在线调试工具 调试本接口。

    参考

    目录