簡體   English   中英

使用服務帳戶憑據對 Microsoft Graph 進行 OAuth2 身份驗證

[英]OAuth2 authentication for Microsoft Graph using service account credentials

我想創建一個能夠在 Microsoft Teams 中自動發送消息的網絡服務。 我嘗試作為應用程序進行身份驗證,但目前 Microsoft 不支持授予應用程序權限以在 Teams 中發送消息,因此這里唯一的選擇是使用具有真實憑據的服務帳戶進行身份驗證(除非有其他方法?)。 此方法僅指定使用用戶交互以用戶身份登錄。

我想使用服務帳戶teamchatbot@domain.com對 Microsoft Graph 進行身份驗證,以便在 Microsoft Teams 上發送消息。 (與類似,但由於我沒有訪問資源,因此有點不同。)有沒有一種方法可以代表服務帳戶以靜默方式獲取訪問令牌以發送消息?

看來你有誤會了。

你的場景其實和這個帖子一樣

您應該使用資源所有者密碼憑據調用 Microsoft Graph API 來發送消息。

根據權限,您需要Group.ReadWrite.All委派權限。 因此,您需要先將此權限添加到您的 Azure AD 應用程序中。

在此處輸入圖片說明

添加此權限后,請不要忘記單擊“授予{您的租戶}的管理員同意”。

然后你可以獲得這樣的訪問令牌:

在此處輸入圖片說明

您可以看到https://graph.microsoft.com/Group.ReadWrite.All已包含在響應中。

現在您可以使用此訪問令牌調用POST /teams/{id}/channels/{id}/messages

我還能想到其他一些方法。

1) 一個是您可以使用Microsoft Bot Framework創建一個機器人,一旦該機器人安裝到特定團隊,它就可以發送“主動”消息(即不是響應用戶消息的消息,而是需要時)。

從本質上講,當你的機器人被添加到團隊時,你可以訪問你的機器人中的特定事件(OnMembersAdded 用於一般機器人,現在有一個僅用於團隊的新事件)。 在我對Detect bot application open event 的回答中查看更多相關信息。 在這種情況下,您可以獲得稍后需要的信息,您可以將這些信息存儲在數據庫或任何地方,然后創建消息,就好像它是您的機器人發布到頻道一樣。 您可以在以編程方式向 Microsoft Teams 中的機器人發送消息中看到更多相關信息

上面的這個選項需要做很多工作,但是如果您想要機器人的其他功能(例如從用戶接收消息的能力),則很有用

2) 另一種更簡單的方法是直接創建一個傳入的 webhook 到頻道。 這是一篇關於使用 PowerShell 執行此操作的帖子,因此您可以執行此操作以進行簡單測試並從那里推斷出 Node.js。

當然,像 Flow (Power Automate) 這樣的東西也是一種選擇,但是您已經在編寫代碼,因此上述方法之一可能更容易。

希望有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM