====== 使用环信 App Token 鉴权 ====== 更新时间:2022-02-28 环信提供的 REST API 需要权限才能访问,权限通过发送 HTTP 请求时携带 app token(即管理员权限 token)来体现。 另外环信 Server SDK 提供了用户、消息、群组、聊天室等资源的操作管理能力,具体参见:[[im:server:ready:sdk|Server SDK]]。 下面描述获取管理员 token 的方式。 ===== 获取管理员权限 token ===== 说明:API 描述的时候使用到的 {APP 的 client_id} 之类的这种参数需要替换成具体的值。 ''%%重要提醒:%%'' **获取 token 时服务器会返回 token 有效期,具体值参考接口返回的 expires_in 字段值,可通过环信即时通讯管理后台设置,参见 [[https://console.easemob.com/app/applicationOverview/userManagement|用户认证详情页面]]。该参数值以最新设置为准。由于网络延迟等原因,系统不保证 token 在此值表示的有效期内绝对有效,如果发现 token 使用异常请重新获取新的 token,比如 “http response code” 返回 401。另外,请不要频繁向服务器发送获取 token 的请求,同一账号发送此请求超过一定频率会被服务器封号。** ''%%client_id%%'' 和 ''%%client_secret%%'' 可以在环信管理后台的 [[https://console.easemob.com/user/login/|APP 详情页面]] 看到。 === HTTP 请求 === 方法:''%%POST%%'' 接入点:''%%{https://host}/{org_name}/{app_name}/token%%'' === 路径参数 === ^ 参数 ^类型 ^是否必需 ^描述 ^ | ''%%host%%'' |String |必需 |你在环信即时通讯云控制台注册应用时的集群服务器地址。 | | ''%%org_name%%'' |String |必需 |你在环信即时通讯云控制台注册项目时填入的公司(组织)名称。| | ''%%app_name%%'' |String |必需 |你在环信即时通讯云控制台注册项目时填入的应用名称。 | === 请求头参数 === ^ 参数 ^类型 ^ 是否必需 ^ 描述 ^ | ''%%Content-Type%%'' |String | 必需 | 内容类型:''%%application/json%%'' | === 请求体参数 === ^参数 ^类型 ^ 是否必需 ^描述 ^ |''%%grant_type%%'' |String | 必需 |''%%client_credentials%%'' ,固定字符串。 | |''%%client_id%%'' |String | 必需 |App 的 ''%%client_id%%'',参见 [[https://console.easemob.com/app-detail/detail|app 详情页面]]。 | |''%%client_secret%%'' |String | 必需 | App 的 ''%%client_secret%%'',参见 [[https://console.easemob.com/app-detail/detail|app 详情页面]]。| |''%%ttl%%'' |Long | 必需 |token 有效期,单位为秒(s)。此外,也可通过环信即时通讯云控制台设置,参见 [[https://console.easemob.com/app/applicationOverview/userManagement|用户认证详情页面]]。该参数值以最新设置为准。| === 响应参数 === ^参数 ^类型 ^说明 ^ |''%%access_token%%'' |String |有效的 token 字符串。 | |''%%expires_in%%'' |Long |token 有效时间,单位为秒,在有效期内不需要重复获取。| |''%%application%%'' |String |当前 App 的 UUID 值。 | === 请求示例 === curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{ "grant_type": "client_credentials", "client_id": "YXA6i-Ak8Ol4Eei2l11ZjV-EAg", "client_secret": "YXA6VunqiNxoB7IwXHInk1cGiXOOJfc", "ttl": 1024000 }' 'http://a1.easemob.com/easemob-demo/testapp/token' === 响应示例 === **返回值 200,表示成功返回 token。** { "access_token": "YWMte3bGuOukEeiTkNP4grL7iwAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnKdc-ZgBPGgBFTrLhhyK8woMEI005emtrLJFJV6aoxsZSioSIZkr5kw", "expires_in": 1024000, "application": "8be024f0-e978-11e8-b697-5d598d5f8402" } === 响应码 === ^ 响应码 ^ 意义 ^ |200 |成功。 | |429,503 或者其他 5xx |单位时间内请求过多。请稍后重试。 | |500 |服务器内部错误,一般是 mysql 错误。 如果问题持续存在,请联系我们的技术支持团队。 | [[http://api-docs.easemob.com/|使用 Easemob REST API 在线测试]]