====== 用户体系集成 ======
----
===== 数据结构 =====
环信作为一个聊天通道,只需要提供环信 ID 和密码就够了。
^名称 ^字段名 ^数据类型 ^描述^
|环信 ID |username |String |环信 ID 是环信用户的唯一标识,在 AppKey 的范围内唯一|
|用户密码 |password |String |用户登录环信使用的密码|
===== 名词解释 =====
当您申请了 AppKey 后,会得到一个 **xxxx#xxxx** 格式的字符串,这个就是您的 AppKey,下文中用到的:
* **org_name 对应#前面部分**
* **app_name 对应#后面部分**
===== 环信 ID 规则 =====
当 APP 和环信集成的时候,需要把 APP 系统内的已有用户和新注册的用户和环信集成,为每个已有用户创建一个环信的账号(环信 ID),并且 APP 有新用户注册的时候,需要同步的在环信中注册。
在注册环信账户的时候,需要注意环信 ID 的规则:
* 使用英文字母和(或)数字的组合
* 不能使用中文
* 不能使用 email 地址
* 不能使用 UUID
* 用户ID的长度在230字节以内
* 中间不能有空格或者井号(#)等特殊字符
* 允许的用户名正则 “[a-zA-Z0-9_-.]*”(a~z大小写字母/数字/下划线/横线/英文句号),其他都不允许 **如果是大写字母会自动转成小写**
* 不区分大小写。系统忽略大小写,认为 AA、Aa、aa、aA 都是一样的。如果系统已经存在了环信 ID 为 AA 的用户,再试图使用 aa 作为环信 ID 注册新用户,系统返回用户名重复,以此类推。但是请注意:环信 ID 在数据上的表现形式还是用户最初注册的形式,注册时候使用的大写就保存大写,是小写就保存小写。即:使用 AA 注册,环信保存的 ID 就是 AA;使用 Aa 注册,环信保存的 ID 就是 Aa,以此类推。
另:本文档中可能会交错使用“环信 ID”和“环信用户名”两个术语,但是请注意,这里两个的意思是一样的。
因为一个用户的环信 ID 和他的在 APP 中的用户名并不需要一致,只需要有一个明确的对应关系。例如,用户名是 stliu@apache.org,当这个用户登录到 APP 的时候,可以登录成功之后,再登录环信的服务器,所以这时候,只需要能够从 stliu@apache.org 推导出这个用户的环信 ID 即可。
**注意:**以下所有 API 均需要 org 管理员或 APP 管理员权限才能访问。
强烈建议保护好 org 管理员,APP 管理员的用户名和密码以及 APP 的 client_id 和 client_secret,尽量只在 APP 的服务器后台对环信用户做增删改查的管理,包括新用户注册。为了您的信息安全,请一定不要将 org 管理员或 APP 管理员的用户名和密码写死在手机客户端中,因为手机 APP 很容易被反编译,从而导致别人获取到您的管理员账号和密码,导致数据泄露。
''注意:''
''1.如果没有购买过vip集群的用户(vip集群不是企业版,而需另外购买),在使用 REST API 时域名请使用a1.easemob.com(服务器端文档中的 REST API 使用的都是该域名)。''
''2.如果是vip集群的用户,请联系对接的环信商务索要域名。''
''3.如果是使用环信客服系统中快速创建关联中的appkey,在使用 REST API 时域名请使用a1-vip5.easemob.com。''
''4.对http,https都支持。''
如果不确认自己appkey该使用哪个域名,可以提交工单找环信技术确认(提交工单流程:登录环信管理后台https://console.easemob.com/user/login,点击创建已有应用或新建应用后,在应用详情页面下方点击'技术支持'提交工单即可)。
===== 获取 APP 管理员 Token =====
环信提供的 REST API 需要权限才能访问,权限通过发送 HTTP 请求时携带 token 来体现,下面描述获取 token 的方式。说明:API 描述的时候使用到的 {APP 的 client_id} 之类的这种参数需要替换成具体的值。
**重要提醒:**获取 token 时服务器会返回 token 有效期,具体值参考接口返回的 expires_in 字段值。由于网络延迟等原因,系统不保证 token 在此值表示的有效期内绝对有效,如果发现 token 使用异常请重新获取新的 token,比如 http response code 返回 401。另外,请不要频繁向服务器发送获取 token 的请求,同一账号发送此请求超过一定频率会被服务器封号,切记,切记!!
==== 使用 APP 的 client_id 和 client_secret 获取授权管理员 token ====
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
client_id 和 client_secret 可以在环信管理后台的 APP 详情页面看到。
* Path: /{org_name}/{app_name}/token
* HTTP Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”}
* Request Body: {“grant_type”: “client_credentials”,”client_id”: “{APP的client_id}”,”client_secret”: “{APP的client_secret}”}
* Response Body:
^Key ^Value^
|access_token |token 值|
|expires_in |token 有效时间,以秒为单位,在有效期内不需要重复获取|
|application |当前 APP 的 UUID 值|
* 可能的错误码:400(client_id 或 client_secret 错误)、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端REST API常见错误码]]
curl 示例:
curl -X POST "https://a1.easemob.com/easemob-demo/chatdemoui/token" -d '{"grant_type":"client_credentials","client_id":"YXA6wDs-MARqEeSO0VcBzaqg11","client_secret":"YXA6JOMWlLap_YbI_ucz77j-4-mI0dd"}'
Response 示例:
{
"access_token":"YWMtWY779DgJEeS2h9OR7fw4QgAAAUmO4Qukwd9cfJSpkWHiOa7MCSk0MrkVIco",
"expires_in":5184000,
"application":"c03b3e30-046a-11e4-8ed1-5701cdaaa0e4"
}
===== IM 用户管理 =====
==== 注册 IM 用户[单个] ====
在 URL 指定的 org 和 APP 中创建一个新的用户,分两种模式:开放注册和授权注册。
* “开放注册”模式:注册环信账号时,不用携带管理员身份认证信息;
* “授权注册”模式:注册环信账号时,必须携带管理员身份认证信息。推荐使用“授权注册”,这样可以防止某些已经获取了注册 URL 和知晓注册流程的人恶意向服务器大量注册垃圾用户。
注意:以下 API 中提到的 ${token} 是个变量,使用时需要替换成通过 APP 的 client_id 和 client_secret 获取到的 token。
=== 开放注册 ===
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users
* HTTP Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”}
* Request Body: {“username”:”${用户名}”,”password”:”${密码}”, “nickname”:”${昵称值}”}
注:创建用户时,username 和 password 是必须的,nickname 是可选的,这个 nickname 用于 iOS 推送。如果要在创建用户时设置 nickname,请求 body 是:{“username”:”jliu”,”password”:”123456”, “nickname”:”建国”} 这种形式,下面的示例不包含 nickname。批量注册时同此理。
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(用户已存在、用户名或密码为空、用户名不合法[见用户名规则])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X POST -i "https://a1.easemob.com/easemob-demo/chatdemoui/users" -d '{"username":"jliu","password":"123456"}'
Response 示例:
{
"action" : "post",
"application" : "a2e433a0-ab1a-11e2-a134-85fca932f094",
"params" : { },
"path" : "/users",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users",
"entities" : [ {
"uuid" : "7f90f7ca-bb24-11e2-b2d0-6d8e359945e4",
"type" : "user",
"created" : 1368377620796,
"modified" : 1368377620796,
"username" : "jliu",
"activated" : true
} ],
"timestamp" : 1368377620793,
"duration" : 125,
"organization" : "easemob-demo",
"applicationName" : "chatdemo"
}
=== 授权注册 ===
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users
* HTTP Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Request Body: {“username”:”${用户名}”,”password”:”${密码}”}
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(用户已存在、用户名或密码为空、用户名不合法[见用户名规则])、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X POST -H "Authorization: Bearer YWMt39RfMMOqEeKYE_GW7tu81AAAAT71lGijyjG4VUIC2AwZGzUjVbPp_4qRD5k" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users" -d '{"username":"jliu","password":"123456"}'
Response 示例:
{
"action" : "post",
"application" : "a2e433a0-ab1a-11e2-a134-85fca932f094",
"params" : { },
"path" : "/users",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users",
"entities" : [ {
"uuid" : "7f90f7ca-bb24-11e2-b2d0-6d8e359945e4",
"type" : "user",
"created" : 1368377620796,
"modified" : 1368377620796,
"username" : "jliu",
"activated" : true
}
} ],
"timestamp" : 1368377620793,
"duration" : 125,
"organization" : "easemob-demo",
"applicationName" : "chatdemo"
}
==== 注册 IM 用户[批量] ====
每次调用接口时,注册用户数量有最大限制,详见[[im:450errorcode:45restastrict|接口限流说明]]。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users
* HTTP Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Request Body: [{“username”:”${用户名1}”,”password”:”${密码}”},…,{“username”:”${用户名2}”,”password”:”${密码}”}]
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(用户已存在、用户名或密码为空、用户名不合法[见用户名规则])、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X POST -H "Authorization: Bearer YWMtP_8IisA-EeK-a5cNq4Jt3QAAAT7fI10IbPuKdRxUTjA9CNiZMnQIgk0LEUE" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users" -d '[{"username":"u1", "password":"p1"}, {"username":"u2", "password":"p2"}]'
Response 示例:
{
"action" : "post",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params" : { },
"path" : "/users",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users",
"entities" : [ {
"uuid" : "de73238a-31ca-11e4-bdc9-9fdda213fcaa",
"type" : "user",
"created" : 1409570811320,
"modified" : 1409570811320,
"username" : "u1",
"activated" : true
}, {
"uuid" : "de86365a-31ca-11e4-aecf-9509b836c0d6",
"type" : "user",
"created" : 1409570811445,
"modified" : 1409570811445,
"username" : "u2",
"activated" : true
} ],
"timestamp" : 1409570811312,
"duration" : 802,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
==== 获取 IM 用户[单个] ====
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{username}
* HTTP Method: GET
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:404(用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X GET -H "Authorization: Bearer YWMtSozP9jHNEeSQegV9EK5eAQAAAUlmBR2bTGr-GP2xNh8GhUCdKViBFgtox3M" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users/ywuxvxuir6"
Response 示例:
{
"action" : "get",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params" : { },
"path" : "/users",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users/ywuxvxuir6",
"entities" : [ {
"uuid" : "628a88ba-dfce-11e3-8cac-51d3cb69b303",
"type" : "user",
"created" : 1400556326075,
"modified" : 1400556326075,
"username" : "ywuxvxuir6",
"activated" : true
} ],
"timestamp" : 1409574716897,
"duration" : 57,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
==== 获取 IM 用户[批量] ====
该接口默认返回最早创建的10个用户,如果需要指定获取数量,需加上参数 limit=N,N 为数量值。关于分页:如果 DB 中的数量大于 N,返回 JSON 会携带一个字段“cursor”,我们把它叫做”游标”,该游标可理解为结果集的指针,值是变化的。往下取数据的时候带着游标,就可以获取到下一页的值。如果还有下一页,返回值里依然还有这个字段,直到没有这个字段,说明已经到最后一页。cursor的意义在于数据(真)分页。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
=== 不分页 ===
* Path: /{org_name}/{app_name}/users
* HTTP Method: GET
* URL Params: limit=20
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X GET -H "Authorization: Bearer YWMtP_8IisA-EeK-a5cNq4Jt3QAAAT7fI10IbPuKdRxUTjA9CNiZMnQIgk0LEUE" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users?limit=20"
Response 示例:
{
"action" : "get",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params" : {
"limit" : [ "20" ]
},
"path" : "/users",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users?ql=select+*+from+null&limit=20",
"entities" : [ {
"uuid" : "fff15c10-df37-11e3-843f-e5b88d483c56",
"type" : "user",
"created" : 1400491736144,
"modified" : 1409055655016,
"username" : "wjglpgecxu",
"activated" : true,
"nickname" : "wjglpgecxu",
"notifier_name" : "chatdemoui_dev"
}, {
"uuid" : "4cca8760-df3c-11e3-8712-9f7483b2df95",
"type" : "user",
"created" : 1400493583061,
"modified" : 1400493583061,
"username" : "pfs5afofrf",
"activated" : true
}, {
"uuid" : "5918fb7a-df3f-11e3-94d1-1f977e72d55c",
"type" : "user",
"created" : 1400494892199,
"modified" : 1407465728550,
"username" : "igm8dl8m2e",
"activated" : true,
"nickname" : "sadsadsa",
"notification_display_style" : 0,
"notification_no_disturbing" : false
}, {
"uuid" : "ee6e5a3a-df3f-11e3-bbe9-d3a806493d4a",
"type" : "user",
"created" : 1400495142739,
"modified" : 1400495142739,
"username" : "lgqieuevag",
"activated" : true
}, {
"uuid" : "6d3ba2ea-df41-11e3-b304-eb2e9192a84a",
"type" : "user",
"created" : 1400495784974,
"modified" : 1400495784974,
"username" : "quqx6qjmb2",
"activated" : true
}, {
"uuid" : "51b663ba-df42-11e3-8470-cd9881131147",
"type" : "user",
"created" : 1400496168299,
"modified" : 1400496168299,
"username" : "y0fchl0ps9",
"activated" : true
}, {
"uuid" : "b8b1c32a-df42-11e3-b375-53147ac0d738",
"type" : "user",
"created" : 1400496341074,
"modified" : 1400496341074,
"username" : "v3y0kf9arx",
"activated" : true
}, {
"uuid" : "8cf86e4a-df61-11e3-8a70-25cc7e73257e",
"type" : "user",
"created" : 1400509582116,
"modified" : 1400509582116,
"username" : "kapzkr9rro",
"activated" : true
}, {
"uuid" : "a11dca4a-df62-11e3-8551-493bea6a0997",
"type" : "user",
"created" : 1400510045412,
"modified" : 1400510045412,
"username" : "vkpvscnkzn",
"activated" : true
}, {
"uuid" : "860169a4-df64-11e3-aaae-6bc8d50bc307",
"type" : "user",
"created" : 1400510858921,
"modified" : 1400510858921,
"username" : "6tkecmjtzn",
"activated" : true
}, {
"uuid" : "1ed6bffa-df68-11e3-80f0-33f2237fa6e0",
"type" : "user",
"created" : 1400512403823,
"modified" : 1400512403823,
"username" : "xc6xrnbzci",
"activated" : true
}, {
"uuid" : "5472a84a-df68-11e3-b0b9-735c1b1db9a1",
"type" : "user",
"created" : 1400512493764,
"modified" : 1400512493764,
"username" : "vrhfk5lxsz",
"activated" : true
}, {
"uuid" : "79b3db1a-dfbd-11e3-9c5d-3be5e57070a5",
"type" : "user",
"created" : 1400549063489,
"modified" : 1400549063489,
"username" : "qmlu5szkbm",
"activated" : true
}, {
"uuid" : "3a2416ea-dfc2-11e3-a3e8-238b964488ee",
"type" : "user",
"created" : 1400551104334,
"modified" : 1400551104334,
"username" : "6pxxbfcnxu",
"activated" : true
}, {
"uuid" : "65f6cf1a-dfc2-11e3-9dad-2929901f1b97",
"type" : "user",
"created" : 1400551177857,
"modified" : 1400551177857,
"username" : "xffslraxae",
"activated" : true
}, {
"uuid" : "2631911a-dfc9-11e3-803d-23343cadc4ed",
"type" : "user",
"created" : 1400554077345,
"modified" : 1400554077345,
"username" : "pfxfc9ggkz",
"activated" : true
}, {
"uuid" : "4295acaa-dfca-11e3-9bf1-5fd8df7f7659",
"type" : "user",
"created" : 1400554554474,
"modified" : 1400554554474,
"username" : "pksaxc6pao",
"activated" : true
}, {
"uuid" : "8c76072a-dfca-11e3-acc7-7dbd7c3dd494",
"type" : "user",
"created" : 1400554678418,
"modified" : 1400554678418,
"username" : "s1yqttgtya",
"activated" : true
}, {
"uuid" : "93d710ea-dfca-11e3-a6e8-4f903c0b10fb",
"type" : "user",
"created" : 1400554690798,
"modified" : 1400554690798,
"username" : "qihp1et8t4",
"activated" : true
}, {
"uuid" : "b1fbbdaa-dfca-11e3-a242-8d6201f83c2b",
"type" : "user",
"created" : 1400554741370,
"modified" : 1400554741370,
"username" : "0vwy72min6",
"activated" : true
} ],
"timestamp" : 1409571908388,
"duration" : 747,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui",
"cursor" : "LTU2ODc0MzQzOnNmdTlxdF9LRWVPaVFvMWlBZmc4S3c",
"count" : 20
}
=== 分页 ===
* Path: /{org_name}/{app_name}/users
* HTTP Method: GET
* URL Params: limit=20&cursor=LTU2ODc0MzQzOnNmdTlxdF9LRWVPaVFvMWlBZmc4S3c
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
curl 示例:
curl -X GET -H "Authorization: Bearer YWMtSozP9jHNEeSQegV9EKeAQAAAUlmBR2bTGr-GP2xNh8GhUCdKViBFgtox3M" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users?limit=20&cursor=LTU2ODc0MzQzOnNmdTlxdF9LRWVPaVFvMWlBZmc4S3c"
Response 示例:
{
"action" : "get",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params" : {
"limit" : [ "20" ],
"cursor" : [ "LTU2ODc0MzQzOnNmdTlxdF9LRWVPaVFvMWlBZmc4S3c" ]
},
"path" : "/users",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users?ql=select+*+from+null&limit=20",
"entities" : [ {
"uuid" : "db8b63aa-dfca-11e3-b938-0337d3f77124",
"type" : "user",
"created" : 1400554811098,
"modified" : 1400554811098,
"username" : "an9hmj9js2",
"activated" : true
}, {
"uuid" : "e4fab3fa-dfca-11e3-a4ce-59804f43b0c8",
"type" : "user",
"created" : 1400554826927,
"modified" : 1400554826927,
"username" : "3qwepp6xkg",
"activated" : true
}, {
"uuid" : "f844e7aa-dfca-11e3-9eb4-3d526f9ecfeb",
"type" : "user",
"created" : 1400554859290,
"modified" : 1400554859290,
"username" : "ce41dtafer",
"activated" : true
}, {
"uuid" : "fc4f4c5a-dfca-11e3-aaf8-239a98c53960",
"type" : "user",
"created" : 1400554866069,
"modified" : 1400554866069,
"username" : "2ewcgkhhxf",
"activated" : true
}, {
"uuid" : "0005ebba-dfcb-11e3-9704-f734eb21dbc4",
"type" : "user",
"created" : 1400554872299,
"modified" : 1400554872299,
"username" : "zh9w1hc49q",
"activated" : true
}, {
"uuid" : "7f8e638a-dfcb-11e3-971e-fdc9e466fac1",
"type" : "user",
"created" : 1400555086264,
"modified" : 1400555086264,
"username" : "lxrpebngsl",
"activated" : true
}, {
"uuid" : "2d7fa7ba-dfcc-11e3-8b04-5f7a1794920c",
"type" : "user",
"created" : 1400555378091,
"modified" : 1400555378091,
"username" : "yeimn3szbh",
"activated" : true
}, {
"uuid" : "3cc89e7a-dfcc-11e3-9a11-f1c6519f66af",
"type" : "user",
"created" : 1400555403735,
"modified" : 1400555403735,
"username" : "7s5e3jtieh",
"activated" : true
}, {
"uuid" : "7cc785ea-dfcc-11e3-b24a-d5b4112501a1",
"type" : "user",
"created" : 1400555511102,
"modified" : 1400555511102,
"username" : "5cxhactgdj",
"activated" : true
}, {
"uuid" : "ba8b717a-dfcc-11e3-85ca-3db38b18c75d",
"type" : "user",
"created" : 1400555614727,
"modified" : 1400555614727,
"username" : "qjf8b3r6q8",
"activated" : true
}, {
"uuid" : "d5ad176a-dfcc-11e3-9e67-d933f3e27add",
"type" : "user",
"created" : 1400555660246,
"modified" : 1400555660246,
"username" : "mh2kbjyop1",
"activated" : true
}, {
"uuid" : "2d4bf81a-dfcd-11e3-9e57-eb0fac2d4582",
"type" : "user",
"created" : 1400555807249,
"modified" : 1400555807249,
"username" : "q4xpsfjfvf",
"activated" : true
}, {
"uuid" : "65368b5a-dfcd-11e3-8a1a-b9f751cf717c",
"type" : "user",
"created" : 1400555901061,
"modified" : 1400555901061,
"username" : "r1xnbh79us",
"activated" : true
}, {
"uuid" : "6a9423fa-dfcd-11e3-8841-c1c4a8c96d7d",
"type" : "user",
"created" : 1400555910063,
"modified" : 1400555910063,
"username" : "sofa8kyoca",
"activated" : true
}, {
"uuid" : "1698653a-dfce-11e3-8524-89dd680b7ce4",
"type" : "user",
"created" : 1400556198659,
"modified" : 1400556198659,
"username" : "4lo3srucvl",
"activated" : true
}, {
"uuid" : "236b79fa-dfce-11e3-a9a3-250f2047b4bc",
"type" : "user",
"created" : 1400556220175,
"modified" : 1400556220175,
"username" : "w2k0etnjjj",
"activated" : true
}, {
"uuid" : "54eb716a-dfce-11e3-9781-ab12107b7351",
"type" : "user",
"created" : 1400556303222,
"modified" : 1400556303222,
"username" : "ir4ad2dqri",
"activated" : true
}, {
"uuid" : "5bb51d2a-dfce-11e3-be10-4ff224c17422",
"type" : "user",
"created" : 1400556314610,
"modified" : 1400556314610,
"username" : "0fktzcr36b",
"activated" : true
}, {
"uuid" : "60cf6b3a-dfce-11e3-b8bf-ed78a8f851f8",
"type" : "user",
"created" : 1400556323171,
"modified" : 1400556323171,
"username" : "ytbdzt3w9e",
"activated" : true
}, {
"uuid" : "628a88ba-dfce-11e3-8cac-51d3cb69b303",
"type" : "user",
"created" : 1400556326075,
"modified" : 1400556326075,
"username" : "ywuxvxuir6",
"activated" : true
} ],
"timestamp" : 1409574113435,
"duration" : 2812,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui",
"cursor" : "LTU2ODc0MzQzOllvcUl1dF9PRWVPTXJGSFR5Mm16QXc",
"count" : 20
}
==== 删除 IM 用户[单个] ====
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
**注意:**删除一个用户会删除以该用户为群主的所有群组和聊天室。
* Path: /{org_name}/{app_name}/users/{username}
* HTTP Method: DELETE
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:404(用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X DELETE -H "Authorization: Bearer YWMtSozP9jHNEeSQegV9EK5eAQAAAUlmBR2bTGr-GP2xNh8GhUCdKViBFgtox3M" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users/ywuxvxuir6"
Response 示例:
{
"action" : "delete",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params" : { },
"path" : "/users",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users",
"entities" : [ {
"uuid" : "628a88ba-dfce-11e3-8cac-51d3cb69b303",
"type" : "user",
"created" : 1400556326075,
"modified" : 1400556326075,
"username" : "ywuxvxuir6",
"activated" : true
} ],
"timestamp" : 1409576121910,
"duration" : 3330,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
==== 删除 IM 用户[批量] ====
删除某个 APP 下指定数量的环信账号。可一次删除 N 个用户,数值可以修改。建议这个数值在100-500之间,不要过大。需要注意的是,这里只是批量的一次性删除掉 N个用户,具体删除哪些并没有指定,可以在返回值中查看到哪些用户被删除掉了。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users
* HTTP Method: DELETE
* URL Params: limit=N,N指定删除数据的最大条数
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X DELETE -H "Authorization: Bearer YWMtSozP9jHNEeSQegV9EK5eAQAAAUlmBR2bTGr-GP2xNh8GhUCdKViBFgtox3M" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users?limit=5"
Response 示例:
{
"action" : "delete",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params" : {
"limit" : [ "5" ]
},
"path" : "/users",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users",
"entities" : [ {
"uuid" : "fff15c10-df37-11e3-843f-e5b88d483c56",
"type" : "user",
"created" : 1400491736144,
"modified" : 1409055655016,
"username" : "wjglpgecxu",
"activated" : true,
"nickname" : "wjglpgecxu",
"notifier_name" : "chatdemoui_dev"
}, {
"uuid" : "4cca8760-df3c-11e3-8712-9f7483b2df95",
"type" : "user",
"created" : 1400493583061,
"modified" : 1400493583061,
"username" : "pfs5afofrf",
"activated" : true
}, {
"uuid" : "5918fb7a-df3f-11e3-94d1-1f977e72d55c",
"type" : "user",
"created" : 1400494892199,
"modified" : 1407465728550,
"username" : "igm8dl8m2e",
"activated" : true,
"nickname" : "sadsadsa",
"notification_display_style" : 0,
"notification_no_disturbing" : false
}, {
"uuid" : "ee6e5a3a-df3f-11e3-bbe9-d3a806493d4a",
"type" : "user",
"created" : 1400495142739,
"modified" : 1400495142739,
"username" : "lgqieuevag",
"activated" : true
}, {
"uuid" : "6d3ba2ea-df41-11e3-b304-eb2e9192a84a",
"type" : "user",
"created" : 1400495784974,
"modified" : 1400495784974,
"username" : "quqx6qjmb2",
"activated" : true
} ],
"timestamp" : 1409576576785,
"duration" : 9426,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui",
"cursor" : "LTU2ODc0MzQzOmJUdWk2dDlCRWVPekJPc3VrWktvU2c"
}
==== 重置 IM 用户密码 ====
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{username}/password
* HTTP Method: PUT
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: {“newpassword” : “${新密码指定的字符串}”}
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(错误请求)、404(用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X PUT -H "Authorization: Bearer YWMtSozP9jHNEeSQegV9EKeAQAAAUlmBR2bTGr-GP2xNh8GhUCdKViBFgtox3M" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users/ywuxvxuir6/password" -d '{"newpassword" : "123456"}'
Response 示例:
{
"action" : "set user password",
"timestamp" : 1409575962124,
"duration" : 326
}
==== 修改用户推送显示昵称 ====
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{username}
* HTTP Method: PUT
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: {“nickname” : “${昵称值}”}
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(用户不存在、错误请求)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端REST API常见错误码]]
curl 示例:
curl -X PUT -H "Authorization: Bearer YWMtSozP9jHNEeSQegV9EKeAQAAAUlmBR2bTGr-GP2xNh8GhUCdKViBFDSEF2E" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users/jianguo" -d '{"nickname" : "张建国"}'
Response 示例:
{
"action" : "put",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"path" : "/users",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users",
"entities" : [ {
"uuid" : "c3b56d5a-7135-11e4-92d2-edab82ae2302",
"type" : "user",
"created" : 1416543645861,
"modified" : 1416550240537,
"username" : "jianguo",
"activated" : true,
"device_token" : "61491f49f3e69cd1d62c5b390e42f4b1cd15bf1a876a487268cfaef9960188ee",
"nickname" : "张建国"
} ],
"timestamp" : 1416550240285,
"duration" : 278,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
===== 好友与黑名单 =====
==== 给 IM 用户添加好友 ====
给一个用户添加好友,好友必须是和自己在一个 APP 下的 IM 用户,每个用户的好友数量上限为1000。{owner_username} 是要添加好友的用户名,{friend_username} 是被添加的用户名。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{owner_username}/contacts/users/{friend_username}
* HTTP Method: POST
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:404(此IM用户或被添加的好友不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X POST -H "Authorization: Bearer YWMtP_8IisA-EeK-a5cNq4Jt3QAAAT7fI10IbPuKdRxUTjA9CNiZMnQIgk0LEU2" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users/jliu/contacts/users/yantao"
Response 示例:
{
"action": "post",
"application":"4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"path":"/users/aa6160da-eb01-11e3-ab09-15edd986e7b7/contacts",
"uri":"https://a1.easemob.com/easemob-demo/chatdemoui/users/jliu/contacts/yantao",
"entities": [
{
"uuid":"0086742a-dc9b-11e3-a782-1b5d581c57a9",
"type":"user",
"created":1400204403810,
"modified":1400204403810,
"username":"yantao",
"activated":true
}
],
"timestamp": 1489128716085,
"duration": 104,
"organization":"easemob-demo",
"applicationName":"chatdemoui"
}
==== 解除 IM 用户的好友关系 ====
从 IM 用户的好友列表中移除一个用户。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{owner_username}/contacts/users/{friend_username}
* HTTP Method: DELETE
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:404(此 IM 用户或被解除的好友不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X DELETE -i -H "Authorization: Bearer YWMtP_8IisA-EeK-a5cNq4Jt3QAAAT7fI10IbPuKdRxUTjA9CNiZMnQIgk0LEU2" "https://a1.easemob.com/easemob-demo/chatdemoui/users/stliu/contacts/users/yantao"
Response 示例:
{
"action" : "delete",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params" : { },
"path" : "/users/stliu/contacts",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users/stliu/contacts/users/yantao",
"entities" : [ {
"uuid" : "aa6160da-eb01-11e3-ab09-15edd986e7b7",
"type" : "user",
"created" : 1401787813725,
"modified" : 1409739134225,
"username" : "88888",
"activated" : true,
"device_token" : "67aab3a88a0b146b7883e7b0275ffe94f509a4e69e8b1db503b2fa4f9c556dd3",
"nickname" : "88888",
"notification_display_style" : 0,
"notification_no_disturbing" : false,
"notification_no_disturbing_end" : 24,
"notification_no_disturbing_start" : 0,
"notifier_name" : "chatdemoui_dev"
} ],
"timestamp" : 1409739808288,
"duration" : 1575,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
==== 获取 IM 用户的好友列表 ====
查看某个 IM 用户的好友信息。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{owner_username}/contacts/users
* HTTP Method: GET
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:404(此 IM 用户或要查看的好友不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X GET -H "Authorization: Bearer YWMtP_8IisA-EeK-a5cNq4Jt3QAAAT7fI10IbPuKdRxUTjA9CNiZMnQIgk0LEU2" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users/v3y0kf9arx/contacts/users"
Response 示例:
{
"action" : "get",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users/v3y0kf9arx/contacts/users",
"entities": [],
"data": [
"ss01",
"ss05",
"ss09"
],
"timestamp" : 1409737366071,
"duration" : 45,
"count": 3
}
==== 获取 IM 用户的黑名单 ====
获取一个IM用户的黑名单。黑名单中的用户无法给该 IM 用户发送消息。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{owner_username}/blocks/users
* HTTP Method: GET
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: “data” : [ “stliu2” ] — 黑名单中的用户的用户名:stliu2
* 可能的错误码:404(此 IM 用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X GET -H "Authorization: Bearer YWMtwIRGSE9gEeSbpNnVBsIhiwAAAUon2XDyEBoBUk6Vg2xm8DZdVjxbhwm7XWY" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users/v3y0kf9arx/blocks/users"
Response 示例:
{
"action" : "get",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users/v3y0kf9arx/blocks/users",
"entities" : [ ],
"data" : [ "stliu2" ],
"timestamp" : 1412824409803,
"duration" : 36
}
==== 往 IM 用户的黑名单中加人 ====
往一个 IM 用户的黑名单中加人,一次可以添加一个或多个,黑名单中的用户无法给该 IM 用户发送消息,每个用户的黑名单人数上限为500。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{owner_username}/blocks/users
* HTTP Method: POST
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: {“usernames”:[“5cxhactgdj”, “mh2kbjyop1”]} —- 需要加入到黑名单中的用户名以数组方式提交,usernames 为关键字不变
* Response Body: “data” : [ “5cxhactgdj”, “mh2kbjyop1” ] — 已经加到黑名单中的用户名:5cxhactgdj、mh2kbjyop1
* 可能的错误码:404(此 IM 用户不存在)、400(被添加的IM用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X POST -H 'Authorization: Bearer YWMtwIRGSE9gEeSbpNnVBsIhiwAAAUon2XDyEBoBUk6Vg2xm8DZdVjxbhwm7XWY' -i 'https://a1.easemob.com/easemob-demo/chatdemoui/users/v3y0kf9arx/blocks/users' -d '{"usernames":["5cxhactgdj", "mh2kbjyop1"]}'
Response 示例:
{
"action" : "post",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui",
"entities" : [ ],
"data" : [ "5cxhactgdj", "mh2kbjyop1" ],
"timestamp" : 1412825162092,
"duration" : 15,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
==== 从 IM 用户的黑名单中减人 ====
从一个 IM 用户的黑名单中减人。将用户从黑名单移除后,恢复好友关系,可以互相收发消息。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{owner_username}/blocks/users/{blocked_username}
* HTTP Method: DELETE
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: entities 中包含了刚刚从黑名单中移除的 IM 用户的详细信息
* 可能的错误码:404(此 IM 用户或被减的用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X DELETE -H 'Authorization: Bearer YWMtwIRGSE9gEeSbpNnVBsIhiwAAAUon2XDyEBoBUk6Vg2xm8DZdVjxbhwm7XWY' -i 'https://a1.easemob.com/easemob-demo/chatdemoui/users/v3y0kf9arx/blocks/users/5cxhactgdj'
Response 示例:
{
"action" : "delete",
"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"path" : "/users/72bb4f9a-fce7-11e3-98f4-adc39e9f4363/blocks",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users/v3y0kf9arx/blocks",
"entities" : [ {
"uuid" : "7cc785ea-dfcc-11e3-b24a-d5b4112501a1",
"type" : "user",
"created" : 1400555511102,
"modified" : 1400555511102,
"username" : "5cxhactgdj",
"activated" : true
} ],
"timestamp" : 1412825354550,
"duration" : 164,
"organization" : "easemob-demo",
"applicationName" : "chatdemoui"
}
===== 在线与离线 =====
==== 查看用户在线状态 ====
查看一个用户的在线状态。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{username}/status
* HTTP Method: GET
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:404(此用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X GET -i -H "Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" "https://a1.easemob.com/easemob-demo/chatdemoui/users/zw123/status"
Response 示例:
{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {},
"uri": "https://a1.easemob.com/easemob-demo/chatdemoui",
"entities": [],
"data": {
"stliu": "online" //注意:这里返回的是用户名和在线状态的键值对,值为 online 或者 offline
},
"timestamp": 1404932199220,
"duration": 743,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}
==== 查询离线消息数 ====
获取一个 IM 用户的离线消息数。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{owner_username}/offline_msg_count
* HTTP Method: GET
* URL Params: 无
* Request Headers: {“Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: “data” : {“v3y0kf9arx” : 0 } —- 用户名:v3y0kf9arx,离线消息数:0条
* 可能的错误码:404(此用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X GET -H "Authorization: Bearer YWMtwIRGSE9gEeSbpNnVBsIhiwAAAUon2XDyEBoBUk6Vg2xm8DZdVjxbhwm7XWY" -i "https://a1.easemob.com/easemob-demo/chatdemoui/users/v3y0kf9arx/offline_msg_count"
Response 示例:
{
"action" : "get",
"uri" : "https://a1.easemob.com/easemob-demo/chatdemoui/users/v3y0kf9arx/offline_msg_count",
"entities" : [ ],
"data" : {
"v3y0kf9arx" : 0
},
"timestamp" : 1412823831894,
"duration" : 57
}
==== 查询某条离线消息状态 ====
通过离线消息的 ID 查看用户的该条离线消息状态。消息ID可以通过[[start:100serverintegration:30chatlog#获取聊天记录|获取聊天记录]]查询。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{username}/offline_msg_status/{msg_id}
* HTTP Method: GET
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:404(此用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X GET -i -H "Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" "https://a1.easemob.com/easemob-demo/chatdemoui/users/zw123/offline_msg_status/1121212"
Response 示例:
{
"action": "get",
"uri": "http://a2.easemob.com/easemob-demo/chatdemoui/users/jianxin/offline_msg_status/12",
"entities": [],
"data": {
"12": "delivered" // 格式:"{消息id}":"{状态}",状态的值有两个: deliverd表示此用户的该条离线消息已经收到过了,undelivered表示此用户的该条离线消息还未收到
},
"timestamp": 1423573644082,
"duration": 644
}
===== 账号禁用与解禁 =====
==== 用户账号禁用 ====
禁用某个 IM 用户的账号,禁用后该用户不可登录,下次解禁后该账户恢复正常使用。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{username}/deactivate
* HTTP Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(此用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X POST -i -H "Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" "https://a1.easemob.com/easemob-demo/chatdemoui/users/zw123/deactivate"
Response 示例:
{
"action": "Deactivate user",
"entities": [
{
"uuid": "3861665a-07e5-11e4-b1d3-b70cde5a834c",
"type": "user",
"created": 1404964180277,
"modified": 1424781662293,
"username": "zw123",
"activated": false,
"nickname": "zw123"
}
],
"timestamp": 1424846198409,
"duration": 244
}
==== 用户账号解禁 ====
解除对某个 IM 用户账号的禁用,解禁后用户恢复正常使用。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{username}/activate
* HTTP Method: POST
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:400(此用户不存在)、401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X POST -i -H "Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" "https://a1.easemob.com/easemob-demo/chatdemoui/users/zw123/activate"
Response 示例:
{
"action": "activate user",
"timestamp": 1424845777195,
"duration": 2
}
===== 强制用户下线 =====
如果某个 IM 用户已经登录环信服务器,强制其退出登录。
注意:在调用程序中,如果返回429错误,说明接口被限流了,请稍微暂停一下并重试。详见[[im:450errorcode:45restastrict|接口限流说明]]。
* Path: /{org_name}/{app_name}/users/{username}/disconnect
* HTTP Method: GET
* URL Params: 无
* Request Headers: {“Content-Type”:”application/json”,”Authorization”:”Bearer ${token}”}
* Request Body: 无
* Response Body: 详情参见示例返回值,返回的 JSON 数据中会包含除上述属性之外的一些其他信息,均可以忽略。
* 可能的错误码:401(未授权[无token、token错误、token过期])、5xx。详见:[[start:450errorcode:10restapierrorcode|服务器端 REST API 常见错误码]]
curl 示例:
curl -X GET -i -H "Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9Ocqq-GwPsKwj_TruuxZfFSC2eIQ" "https://a1.easemob.com/easemob-demo/chatdemoui/users/zw123/disconnect"
Response 示例:
{
"action" : "Disconnect user",
"data" : {
"result" : true // true表示强制下线成功,false表示强制用户下线失败
},
"timestamp" : 1430825373659,
"duration" : 16
}
----
上一页:[[im:100serverintegration:10intro|入门]]
下一页:[[im:100serverintegration:30chatlog|聊天记录]]