Клиентская библиотека Azure Communication Identity для JavaScript — версия 2.0.0

Библиотека идентификаторов используется для управления пользователями и токенами Службы коммуникации Azure.

Начало работы

Prerequisites

Установка

npm install @azure/communication-identity

Поддержка веб-браузеров

Пакет JavaScript

Чтобы использовать эту клиентную библиотеку в браузере, сначала необходимо использовать пакет. Дополнительные сведения о том, как это сделать, см. в нашей документации по .

Ключевые понятия

Clients

Он CommunicationIdentityClient предлагает методы управления пользователями и их токенами.

Examples

Authentication

Вы можете получить ключ и/или строка подключения из вашего ресурса Communication Services в портал Azure. Получив ключ, вы можете аутентифицировать CommunicationIdentityClient его любым из следующих методов:

Создайте KeyCredential с AzureKeyCredential перед инициализацией клиента

import { AzureKeyCredential } from "@azure/core-auth";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const key = "<some-key>";
const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new AzureKeyCredential(key);
const client = new CommunicationIdentityClient(endpoint, credential);

Использование строки подключения

import { CommunicationIdentityClient } from "@azure/communication-identity";

// Example connection string
const connectionString =
  "endpoint=https://contoso.eastus.communications.azure.net/;accesskey=secret";

const client = new CommunicationIdentityClient(connectionString);

Использование TokenCredential

import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

Если вы используете ключ для инициализации клиента, вам также потребуется предоставить соответствующую конечную точку. Эту конечную точку можно получить из ресурса Служб коммуникации в портала Azure.

Usage

Создание нового пользователя

Используйте метод createUser для создания нового пользователя.

import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

const user = await client.createUser();

Создание и обновление пользовательского токена

Используйте этот getToken метод для выпуска или обновления токена для существующего пользователя. Метод также включает список областей токенов коммуникации. Параметры области применения:

  • chat (Используйте это для полного доступа к чат-API)
  • voip (Используйте это для полного доступа к API вызовов)
  • chat.join (Доступ к API чата, но без разрешения на создание, удаление или обновление чатовых потоков)
  • chat.join.limited (Более ограниченная версия chat.join не позволяет добавлять или удалять участников)
  • voip.join (Доступ к API вызова, но без разрешения на начало новых звонков)
import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

const user = await client.createUser();

const { token } = await client.getToken(user, ["chat"]);

Чтобы обновить пользовательский токен, выпустите другой токен с тем же пользователем.

import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

const user = await client.createUser();

let { token } = await client.getToken(user, ["chat"]);

// Refresh the token again
({ token } = await client.getToken(user, ["chat"]));

Создание пользовательского токена с пользовательским сроком действия

Также возможно создать токен доступа Communication Identity, настраивая срок действия. Срок действия токена должен быть в пределах [60 1440] минут. Если не указано, будет использоваться значение по умолчанию 1440 минут (24 часа).

import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

const user = await client.createUser();

const tokenOptions = { tokenExpiresInMinutes: 60 };
const { token } = await client.getToken(user, ["chat"], tokenOptions);

Создание пользователя и токена в одном запросе

Для удобства используйте createUserAndToken для создания нового пользователя и выдачи токена с одним вызовом функции. Это означает один веб-запрос, а не создание пользователя, а затем выпуск токена.

import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

const { user, token } = await client.createUserAndToken(["chat"]);

Создание пользователя и токена с пользовательским сроком действия в одном запросе

Также возможно создать токен доступа Communication Identity, настраивая срок действия. Срок действия токена должен быть в пределах [60 1440] минут. Если не указано, будет использоваться значение по умолчанию 1440 минут (24 часа).

import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

const userAndTokenOptions = { tokenExpiresInMinutes: 60 };
const { user, token } = await client.createUserAndToken(["chat"], userAndTokenOptions);

Отзыв токенов для пользователя

Используйте revokeTokens метод для отзыва всех выпущенных токенов для пользователя.

import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

// Create user
const user = await client.createUser();

// Later when you want to revoke the user's tokens
await client.revokeTokens(user);

Удаление пользователя

Используйте deleteUser метод удаления пользователя.

import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

// Create user
const user = await client.createUser();

// Later when you want to delete the user
await client.deleteUser(user);

Обмен токена доступа Azure AD пользователя Teams на токен доступа Communication

Используйте getTokenForTeamsUser метод обмена токена доступа Azure AD пользователя Teams на новый CommunicationAccessToken с соответствующим сроком истечения.

import { DefaultAzureCredential } from "@azure/identity";
import { CommunicationIdentityClient } from "@azure/communication-identity";

const endpoint = "https://contoso.eastus.communications.azure.net";

const credential = new DefaultAzureCredential();
const client = new CommunicationIdentityClient(endpoint, credential);

const { token, expiresOn } = await client.getTokenForTeamsUser({
  teamsUserAadToken: "<aad-access-token-of-a-teams-user>",
  clientId: "<cliend-id-of-an-aad-application>",
  userObjectId: "<aad-object-id-of-a-teams-user>",
});

Troubleshooting

Logging

Включение ведения журнала может помочь выявить полезные сведения о сбоях. Чтобы просмотреть журнал HTTP-запросов и ответов, задайте для переменной среды AZURE_LOG_LEVEL значение info. В альтернативном порядке, логирование можно включить во время выполнения, вызвав setLogLevel в @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Дальнейшие действия

Ознакомьтесь с примерами каталога, чтобы получить подробные примеры использования этой библиотеки.

Contributing

Если вы хотите внести вклад в эту библиотеку, пожалуйста, ознакомьтесь с руководством contributing guide чтобы узнать больше о том, как создавать и тестировать код.