整合 Azure 函式
簡介
本教學課程提供有關如何設定 Azure 函式以接收使用者相關信息的詳細指引。 強烈建議您設定 Azure 函式。 這有助於避免 Contoso 應用程式中的硬式編碼應用程式參數(例如使用者識別碼和使用者令牌)。 此資訊高度機密。 更重要的是,我們會定期在後端重新整理使用者令牌。 硬式編碼用戶標識碼和令牌組合需要在每次重新整理之後編輯值。
必要條件
開始之前,請務必:
- 建立具有作用中訂用帳戶的 Azure 帳戶。 如需詳細資訊,請參閱 免費建立帳戶。
- 安裝 Visual Studio Code。
設定函式
- 在 Visual Studio Code 中安裝 Azure 函式擴充功能。 您可以從 Visual Studio Code 的外掛程式瀏覽器安裝它,或遵循 此連結
- 遵循 此連結來設定本機 Azure 函式應用程式。 我們需要使用 JavaScript 中的 HTTP 觸發程式範本來建立本機函式。
- 安裝 Azure 通訊服務 連結庫。 我們將使用身分識別連結庫來產生使用者存取令牌。 在本機 Azure 函式應用程式目錄中執行 npm install 命令,以安裝適用於 JavaScript 的 Azure 通訊服務 Identity 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 通訊服務 端點、使用者標識碼和使用者令牌。 請參閱範例應用程式以取得使用方式。
疑難排解指南
- 如果 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 函式中啟用它:
在 Microsoft Entra ID 下註冊您的應用程式(使用 Android 平台設定)。
將您的 App Service 或 Azure Functions 應用程式設定為使用 Microsoft Entra ID 登入。