使用Office 365 Outlook REST API(版本2),我有一個Web應用程序管理對特定郵箱的Outlook訂閱。我已經能夠使用這些示例獲取令牌併成功使用授權代碼流調用API。Outlook REST API:嘗試使用AZURE AD身份驗證調用API
但現在,我想用一個客戶端憑證流,並通過委派權限使用Azure的AD認證獲得令牌(我給應用程序的所有可能的代理權限下的Office 365的Exchange Online)。類似於我在這裏看到的:Get Office 365 API access token without user interaction
我已經註冊了我的申請並獲得了我的租戶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銳在此代碼訂閱):
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");
看起來這是不可能的。請有人放棄一些知識。謝謝閱讀。
感謝您的幫助。有沒有一種方法來利用委託權限而無需UI交互? 我用_me_因爲我不想發佈我的電子郵件。我知道API應該使用用戶電子郵件?例如:[email protected]? –
您可以使用[資源所有者流](https://blogs.msdn.microsoft.com/wishuai/2016/09/25/resource-owner-password-credentials-grant-in-azure-ad-oauth/),如果使用客戶端憑證流程,則可以通過傳送電子郵件來查詢特殊用戶信息。 –
謝謝,我打算試一試。雖然資源所有者流程似乎夠簡單,但我仍然停留在您給予我的鏈接上(構建服務/守護程序應用程序):配置證書令人困惑。 –