簡體   English   中英

Outlook REST API:嘗試使用AZURE AD身份驗證調用API

[英]Outlook REST API: trying to call API using AZURE AD authentication

使用Office 365 Outlook REST API(版本2),我有一個Web應用程序,用於管理對特定郵箱的Outlook訂閱。 我已經能夠使用示例獲取令牌並成功使用授權代碼流調用API。

但是現在,我想使用客戶端憑據流,並通過代理權限使用Azure AD身份驗證獲取令牌(我在Office 365在線交換下為應用程序提供了所有可能的代理權限)。 與我在這里看到的類似:在沒有用戶交互的情況下獲取Office 365 API訪問令牌

我已經注冊了我的申請,並獲得了我的房客ID,客戶ID和機密信息。 我已經能夠獲得令牌,但是當我嘗試使用令牌時,我得到了未經授權的401返回。

這是我獲取令牌的方式:

AuthenticationContext authContext = new AuthenticationContext($"{authority}{tenantId}");
clientCredential = new ClientCredential(client_Id, secret);
authResult = await authContext.AcquireTokenAsync(resource, clientCredential);
authResult.AccessToken;

這是我嘗試使用API​​的方式(嘗試在此代碼中使用REST Sharp刪除訂閱):

var token = await GetOtherToken(account);
rc = new RestClient("https://outlook.office.com/api/v2.0");                    
rc.AddDefaultHeader("Authorization", $"Bearer {token}");                        
request = new RestRequest($"me/subscriptions('{restSubId}')", Method.DELETE);
request.AddHeader("Content-Length", "0");
request.AddHeader("Content-Type", "multipart/form-data");

看起來這是不可能的。 請有人,丟下一些知識。 謝謝閱讀。

使用客戶端憑證流獲取資源的令牌時,您使用的是應用程序身份而不是用戶身份。 因此,您應該為應用程序分配應用程序權限(而不是委托權限)。 另外,由於您使用的是應用程序身份而非用戶身份,因此api無法識別mehttps://outlook.office.com/api/v2.0/me )。 請單擊此處以了解如何在Office 365中構建服務和守護程序應用程序。

暫無
暫無

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

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