簡體   English   中英

如何在常規服務器任務中更新在線 Excel 工作表?

[英]How can I update an online Excel sheet in regular server tasks?

需要我需要能夠將在線 Excel 電子表格與我的數據庫中的數據同步。

問題根據Microsoft Graph api 文檔,這些寫入需要Delegated (work or school account)權限,並且不能使用應用程序權限完成。 但是,我需要在沒有用戶交互的情況下在我的服務器上定期運行它。 我還沒有找到一種無需用戶交互即可獲取具有Delegated (work or school account)權限類型的令牌的方法。 是否可以在服務器上獲得所需的令牌/權限?

到目前為止,我已經閱讀了很多關於 Microsoft 的身份驗證流程和應用場景的頁面(例如, 這篇文章和它的許多下游文章),但我一直無法找到合適的前進道路。 從目前的研究來看,守護程序應用程序工作流似乎是最合適的,除了據我所知,它只允許應用程序權限。 代表流程似乎是另一種選擇,但是 1. 我必須選擇一個 Microsoft 用戶來代表它執行此操作似乎很奇怪,並且 2. 我不確定我是否可以驗證一個用戶一旦與服務器進程分離,然后掛在服務器上的令牌上(不斷刷新它?)。 有沒有辦法讓它工作? 有沒有更好的辦法?

如果你在問題中提到的文檔中的 API 是你的目標 API,那么顯然你只能使用委托的 api 權限。 換句話說,你必須讓一個用戶先登錄,你只能修改屬於登錄用戶的驅動器項中的 excel 文件(我用我的帳戶登錄,我可以修改我的 excel 文件,但我無法修改您的 excel 文件)。

所以,你不想每次都有一個用戶登錄,但你還是想用這個API,你只能嘗試使用ROPC flow硬編碼用戶名和密碼(例如excel admin帳戶的用戶名和密碼) 在應用程序中,僅使您的應用程序修改屬於該帳戶的 excel 文件。

var scopes = new[] { "Files.ReadWrite" };
var tenantId = "tenant_id";
var clientId = "azure_ad_app_id";
var options = new TokenCredentialOptions
{
      AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};
var userName = "username";
var password = "password";
var userNamePasswordCredential = new UsernamePasswordCredential(
                userName, password, tenantId, clientId, options);

var tokenRequestContext = new TokenRequestContext(scopes);
var request = await userNamePasswordCredential.GetTokenAsync(tokenRequestContext);
var res = request.Token;

請注意:如本MsDoc中所述,要更新范圍 object 的屬性,您必須僅授予委托 API 權限。

  • 如果您授予Delegated API 權限,那么您必須僅進行交互式身份驗證流程(Auth-Code Flow,Implicit Flow)
  • 如果您授予應用程序 API 權限,則必須使用客戶端憑據流。

我同意@Tiny Wang的觀點,您可以使用ROPC Flow (但 Microsoft 不推薦),您可以在其中預定義用戶名和密碼。

我使用以下參數生成了訪問令牌:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:ClientID
client_secret:ClientSecret
username:admin@xxx.onmicrosoft.com 
password:****
grant_type:password
scope:https://graph.microsoft.com/Files.ReadWrite

在此處輸入圖像描述

通過使用上面的訪問令牌,您可以嘗試更新范圍 object 的屬性,如下所示:

在此處輸入圖像描述

一旦與服務器進程分離,就對用戶進行身份驗證,然后掛在服務器上的令牌上(不斷刷新它?)

如果您不想通過引用此MsDoc連續刷新訪問令牌,可以嘗試增加訪問令牌的生命周期。

暫無
暫無

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

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