你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
介绍
本教程提供了有关如何设置 Azure 函数以接收用户相关信息的详细指南。 强烈建议设置 Azure 函数。 它有助于避免 Contoso 应用中的硬编码应用程序参数(例如用户 ID 和用户令牌)。 此信息高度机密。 更重要的是,我们会定期在后端刷新用户令牌。 对用户 ID 和令牌组合进行硬编码需要在每次刷新后编辑值。
先决条件
在开始之前,请确保:
- 创建具有活动订阅的 Azure 帐户。 有关详细信息,请参阅创建免费账户。
- 安装 Visual Studio Code。
设置函数
- 在 Visual Studio Code 中安装 Azure 函数扩展。 可以从 Visual Studio Code 的插件浏览器安装它,也可以通过以下链接安装它
- 按照 此链接设置本地 Azure 函数应用。 我们需要在 JavaScript 中使用 HTTP 触发器模板创建本地函数。
- 安装 Azure 通信服务库。 我们将使用标识库生成用户访问令牌。 在本地 Azure 函数应用目录中运行 npm install 命令,安装用于 JavaScript 的 Azure 通信服务标识 SDK。
npm install @azure/communication-identity --save
-
index.js修改文件,使其类似于下面的代码:
const { CommunicationIdentityClient } = require('@azure/communication-identity');
const connectionString = '<your_connection_string>'
const acsEndpoint = "<your_ACS_endpoint>"
module.exports = async function (context, req) {
let tokenClient = new CommunicationIdentityClient(connectionString);
const userIDHolder = await tokenClient.createUser();
const userId = userIDHolder.communicationUserId
const userToken = await (await tokenClient.getToken(userIDHolder, ["chat"])).token;
context.res = {
body: {
acsEndpoint,
userId,
userToken
}
};
}
上述代码的说明:第一行导入接口 CommunicationIdentityClient。 可以在 Azure 门户中的 Azure 通信服务资源中找到第二行中的连接字符串。
ACSEndpoint 是已创建的 Azure 通信服务资源的 URL。
- 在 Visual Studio Code 中打开本地 Azure Function 文件夹。
index.js打开并运行本地 Azure 函数。 将在终端中创建并打印本地 Azure 函数终结点。 打印的消息类似于:
Functions:
HttpTrigger1: [GET,POST] http://localhost:7071/api/HttpTrigger1
在浏览器中打开链接。 结果将类似于以下示例:
{
"acsEndpoint": "<Azure Function endpoint>",
"userId": "8:acs:a636364c-c565-435d-9818-95247f8a1471_00000014-f43f-b90f-9f3b-8e3a0d00c5d9",
"userToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOmE2MzYzNjRjLWM1NjUtNDM1ZC05ODE4LTk1MjQ3ZjhhMTQ3MV8wMDAwMDAxNC1mNDNmLWI5MGYtOWYzYi04ZTNhMGQwMGM1ZDkiLCJzY3AiOjE3OTIsImNzaSI6IjE2Njc4NjI3NjIiLCJleHAiOjE2Njc5NDkxNjIsImFjc1Njb3BlIjoiY2hhdCIsInJlc291cmNlSWQiOiJhNjM2MzY0Yy1jNTY1LTQzNWQtOTgxOC05NTI0N2Y4YTE0NzEiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY3ODYyNzYyfQ.t-WpaUUmLJaD0V2vgn3M5EKdJUQ_JnR2jnBUZq3J0zMADTnFss6TNHMIQ-Zvsumwy14T1rpw-1FMjR-zz2icxo_mcTEM6hG77gHzEgMR4ClGuE1uRN7O4-326ql5MDixczFeIvIG8s9kAeJQl8N9YjulvRkGS_JZaqMs2T8Mu7qzdIOiXxxlmcl0HeplxLaW59ICF_M4VPgUYFb4PWMRqLXWjKyQ_WhiaDC3FvhpE_Bdb5U1eQXDw793V1_CRyx9jMuOB8Ao7DzqLBQEhgNN3A9jfEvIE3gdwafpBWlQEdw-Uuf2p1_xzvr0Akf3ziWUsVXb9pxNlQQCc19ztl3MIQ"
}
将本地函数部署到云。 可在 本文档中找到更多详细信息。
测试部署的 Azure 函数。 首先,在 Azure 门户中查找 Azure 函数。 然后,使用“获取函数 URL”按钮获取 Azure 函数终结点。 你看到的结果应类似于步骤 5 中显示的结果。 Azure 函数终结点将在应用中用于初始化应用程序参数。
实现,该实现
UserTokenClient用于调用目标 Azure 函数资源,并从返回的 JSON 对象获取 Azure 通信服务终结点、用户 ID 和用户令牌。 请参阅示例应用以供使用。
故障排除指南
- 如果 Azure 函数扩展未能将本地函数部署到 Azure 云,则可能是因为 Visual Studio Code 的版本和正在使用的 Azure Function 扩展存在 bug。 此版本组合已经过测试,可正常工作:Visual Studio Code 版本
1.68.1和 Azure 函数扩展版本1.2.1。 - 初始化应用程序常量的位置很棘手,但很重要。 请仔细查看聊天 Android 快速入门。 更具体地说,请注意“设置应用程序常量”部分中的重点说明,并与您使用的版本的示例应用程序进行比较。
(可选) 保护 Azure 函数终结点
出于演示目的,此示例默认使用可公开访问的终结点来提取 Azure 通信服务令牌。 对于生产方案,一个选项是使用自己的安全终结点来预配自己的令牌。
通过其他配置,此示例支持连接到受 Microsoft Entra 保护的终结点,因此应用要求用户登录以提取 Azure 通信服务令牌。 需要使用Microsoft帐户登录才能访问应用。 用户在需要登录时,此设置提高了安全级别。 确定是否根据用例启用它。
请注意,我们当前不支持示例代码中的 Microsoft Entra ID。 按照以下链接在应用和 Azure 函数中启用它: