Skip to content

Commit

Permalink
Merge pull request #17 from haoxiuwen/doc-shengwang
Browse files Browse the repository at this point in the history
Modify Token Authentication Doc
  • Loading branch information
haoxiuwen authored Jan 2, 2025
2 parents 32b39f5 + f097d02 commit 092449b
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 28 deletions.
Binary file modified docs/.vuepress/public/images/applet/service_overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions docs/.vuepress/sidebar/document.ts
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,7 @@ const documentSidebar = [
{ text: 'RESTful API 概览', link: 'overview.html' },
{
text: '消息',
collapsible: true,
children: [
{ text: '发送单聊消息', link: 'message_single.html' },
{ text: '发送群聊消息', link: 'message_group.html' },
Expand All @@ -394,6 +395,7 @@ const documentSidebar = [
},
{
text: '群组',
collapsible: true,
children: [
{ text: '管理群组', link: 'group_manage.html' },
{ text: '管理群组文件', link: 'group_file.html' },
Expand All @@ -414,6 +416,7 @@ const documentSidebar = [
},
{
text: '聊天室',
collapsible: true,
children: [
{ text: '管理超级管理员', link: 'chatroom_superadmin.html' },
{ text: '管理聊天室', link: 'chatroom_manage.html' },
Expand All @@ -434,6 +437,7 @@ const documentSidebar = [
},
{
text: '用户相关',
collapsible: true,
children: [
{ text: '用户体系管理', link: 'account_system.html' },
{ text: '用户属性', link: 'userprofile.html' },
Expand All @@ -445,6 +449,7 @@ const documentSidebar = [
},
{
text: '离线推送',
collapsible: true,
children: [
{ text: '离线推送设置', link: 'push.html' },
{ text: '离线推送的消息扩展', link: 'push_extension.html' },
Expand Down
18 changes: 11 additions & 7 deletions docs/document/server-side/overview.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 环信即时通讯 RESTful API 概览
# 即时通讯 RESTful API 概览

<Toc />

Expand All @@ -22,7 +22,7 @@

## 前提条件

要调用环信即时通讯 RESTful API,请确保满足以下要求:
要调用即时通讯 RESTful API,请确保满足以下要求:

- 已在[声网控制台](https://console.shengwang.cn/overview) [开通配置声网即时通讯 IM 服务](enable_im.html)
- 已从服务端获取 app token,详见 [使用 App Token 鉴权](token_authentication.html)
Expand All @@ -40,15 +40,19 @@

## 请求域名

环信不同数据中心的 RESTful API 请求域名 {host}:
声网不同数据中心的 RESTful API 请求域名 {host}:

应用所在数据中心可以在环信用户管理后台 > 应用列表找到对应的 App Key 点击 **管理** > **即时通讯** > **服务概览** 中查看:
1. 登录[声网控制台](https://console.shengwang.cn/overview)

2. 在左上角下拉框中选择想要开通消息回调服务的项目,然后点击左侧导航栏的**全部产品**,点击**基础能力**分组下的**即时通讯 IM**,进入**功能配置**标签页。

你可以在 **基础信息**页面的**访问域名**区域看到 RESTful API 的请求域名,如下图所示:

![img](/images/applet/service_overview.png)

:::tip
1. 为满足不同客户的业务需求,环信在多地部署了数据中心。不同数据中心的 REST API 请求域名不同。请根据您所在数据中心选择请求域名。
2. 国内 VIP 区、客服专区客户请联系商务经理索要 RESTful API 请求地址。
1. 为满足不同客户的业务需求,声网在多地部署了数据中心。不同数据中心的 REST API 请求域名不同。请根据您所在数据中心选择请求域名。
2. 国内 VIP 区、客服专区客户请联系商务经理提供 RESTful API 请求地址。
3. 支持 HTTP 和 HTTPS。
:::

Expand All @@ -65,4 +69,4 @@

## RESTful API 概览

关于各 RESTful API 的方法、接口 URL、简要介绍以及调用频率上限,详见 [Restful API 调用频率限制](limitationapi.html)
关于各 RESTful API 的方法、接口 URL、简要介绍以及调用频率上限,详见 [RESTful API 调用频率限制](limitationapi.html)
48 changes: 27 additions & 21 deletions docs/document/server-side/token_authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,29 @@

参考以下步骤注册用户:

1. **项目管理**页面,点击你要使用的项目的**操作**一栏中的**配置**
1. 登录[声网控制台](https://console.shengwang.cn/overview)

2. **服务配置**页面,点击**即时通讯**中的**配置**
2. 在左上角下拉框中选择想要开通消息回调服务的项目,然后点击左侧导航栏的**全部产品**,点击**基础能力**分组下的**即时通讯 IM**,进入**运营管理**标签页

3. 在左侧导航栏,选择**运营管理** > **用户**,点击**创建IM用户**
3. **用户**页签下,点击**创建IM用户**

4.**创建IM用户**对话框中,填写用户信息并点击**保存**,创建用户。
4.**添加IM用户**对话框中,填写用户信息并点击**保存**,创建用户。

![img](/images/server-side/token_authentication_user_register.png)

#### 生成 Token

在左侧导航栏选择**基本信息 > 应用信息**,在**数据中心**区域的 **Chat User Temp Token** 框中输入用户 ID,点击**生成**生成一个用户权限 Token,可用于调用 SDK 的 API。
创建用户后,在**用户管理**列表中,你可以点击该用户的**操作**一栏中的**查看Token**。在弹出的**查看IM用户Token**对话框中,查看该用户的 Token 或点击**重新生成**生成新的用户权限 Token。

![img](/images/server-side/token_authentication_user_token_generate.png)

### 生成 App 权限 Token

在左侧导航栏选择**基本信息 > 应用信息**,点击**数据中心**区域的 **Chat App Temp Token** 对应的 **生成** 生成一个 App 权限 Token,可用于调用 RESTful API。
1.[声网控制台](https://console.shengwang.cn/overview)左上角下拉框中选择想要开通消息回调服务的项目,然后点击左侧导航栏的**全部产品**,点击**基础能力**分组下的**即时通讯 IM**,进入**基础信息**标签页。

2.**数据中心**区域,点击 **ChatAppTempToken** 旁边的 **生成**,生成临时 App 权限 Token。

![img](/images/server-side/token_authentication_app_token_generate.png)

为了安全考虑,在生产环境中 Token 由你的 App Server 使用 AgoraTools 生成。本文介绍如何从你的 App Server 中获取 Token 实现用户鉴权。

Expand All @@ -51,9 +59,9 @@

## 前提条件

- 有效的[声网账号](https://docs.agora.io/cn/Agora%20Platform/get_appid_token?platform=All%20Platforms#创建声网账号)
- 拥有 [App 证书](https://docs.agora.io/cn/Agora%20Platform/get_appid_token?platform=All%20Platforms#获取-App-证书)和已开通即时通讯的[声网项目](https://docs.agora.io/cn/Agora%20Platform/get_appid_token?platform=All%20Platforms#创建声网项目)。详见[开启和配置即时通讯服务](./enable_agora_chat)
- 你的声网项目的 App ID、OrgName 和 AppName,详见[开启和配置即时通讯服务](./enable_agora_chat)
- 有效的[声网账号](https://docportal.shengwang.cn/cn/Agora%20Platform/get_appid_token?platform=All%20Platforms#创建声网账号)
- 拥有 [App 证书](https://docportal.shengwang.cn/cn/Agora%20Platform/get_appid_token?platform=All%20Platforms=All%20Platforms#获取-App-证书)和已开通即时通讯的[声网项目](https://docportal.shengwang.cn/cn/Agora%20Platform/get_appid_token?platform=All%20Platforms#创建声网账号)
- 你的声网项目的 App ID,详见[开启和配置即时通讯服务](enable_im.html#4-获取-app-id)
- [Node.js 和 npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)

如果你的网络环境部署了防火墙,为允许你在有网络访问限制的环境中使用即时通讯服务,声网提供防火墙白名单方案。如需使用请[联系技术支持](https://docs.agora.io/cn/Agora%20Platform/ticket?platform=All%20Platforms),我们的技术服务会提供目标域名及对应的端口。
Expand Down Expand Up @@ -209,7 +217,7 @@ public class AgoraChatTokenController {

/**
* 获取 user 权限 token
* @param chatUserId chat 用户 id
* @param chatUserId 声网 IM 的用户 ID
* @return user 权限 token
*/
@GetMapping("/chat/user/{chatUserId}/token")
Expand All @@ -228,22 +236,22 @@ public class AgoraChatTokenController {
}

/**
* 生成 Agora Chat app token
* @return Agora Chat app token
* 生成声网 IM app 权限 token
* @return 声网 IM app 权限 token
*/
private String getAgoraAppToken() {
if (!StringUtils.hasText(appid) || !StringUtils.hasText(appcert)) {
throw new IllegalArgumentException("appid or appcert is not empty");
}

// Use agora App Id、App Cert to generate agora app token
// 利用声网 App Id、App Cert 生成 app 权限 token
ChatTokenBuilder2 builder = new ChatTokenBuilder2();
return builder.buildAppToken(appid, appcert, expirePeriod);
}

/**
* 从缓存中获取 Agora Chat App Token
* @return Agora Chat App Token
* 从缓存中获取声网 IM 的 app 权限 token
* @return 声网 IM app 权限 token
*/
private String getAgoraChatAppTokenFromCache() {
try {
Expand Down Expand Up @@ -307,9 +315,7 @@ return builder.buildAppToken(appid, appcert, expirePeriod);
```shell
curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H "Authorization: Bearer <YourAgoraAppToken>" -i "https://XXXX/XXXX/users" -d '[
{
"username": "user1",
"password": "123",
"nickname": "testuser"
"username": "user1"
}
]'
```
Expand Down Expand Up @@ -344,7 +350,7 @@ return builder.buildAppToken(appid, appcert, expirePeriod);

本节以 Web 客户端为例,介绍如何使用用户权限 Token 在客户端进行鉴权。

请联系商务开通自动注册即使通讯 IM 用户的功能,这样可以使用 chatUserId 生成用户权限 Token 后,在登录即时通讯 IM 时,如果 chatUserId 未注册,那么IM 服务会自动使用 chatUserId 进行注册 IM 用户并登录。chatUserId 请符合 IM 用户名的规范。
请联系商务开通自动注册即时通讯 IM 用户的功能,这样可以使用 chatUserId 生成用户权限 Token 后,在登录即时通讯 IM 时,如果 chatUserId 未注册,那么 IM 服务会自动使用 chatUserId 进行注册 IM 用户并登录。chatUserId 请符合 [IM 用户名的规范](account_system.html#注册单个用户)

在 App Server 中生成用户权限 Token 的核心代码:

Expand Down Expand Up @@ -448,7 +454,7 @@ return builder.buildUserToken(appid, appcert, chatUserId, expirePeriod);

6. 实现 App 逻辑。

复制以下代码到 `index.js` 文件中,将 `<Your App Key>` 替换为你的 [App Key](./enable_agora_chat#获取即时通讯项目信息)
复制以下代码到 `index.js` 文件中,将 `<Your App Key>` 替换为你的 App Key 。

在下列示例代码中可以看到,就客户端而言,用户权限 Token 和以下代码逻辑有关:

Expand Down Expand Up @@ -584,4 +590,4 @@ Token 过期后自动重连可确保终端用户在后台运行应用时保持
### Token 和 RTC 产品
如果你在使用即时通讯 IM 的同时也正在使用[声网 RTC SDK](https://docs.agora.io/cn/Agora%20Platform/term_agora_rtc_sdk),即时通讯 IM 建议你升级到 [Access Token 2](./access_token_2)
如果你在使用即时通讯 IM 的同时也正在使用[声网 RTC SDK](https://docs.agora.io/cn/Agora%20Platform/term_agora_rtc_sdk),即时通讯 IM 建议你升级到 Access Token 2。

0 comments on commit 092449b

Please sign in to comment.