C# 无需用户交互即可获取Office 365 API访问令牌

C# 无需用户交互即可获取Office 365 API访问令牌,c#,office365,office365api,C#,Office365,Office365api,我想在我的应用程序中添加一项功能,以便它能够在不与用户交互的情况下向outlook.com添加日历事件 我看到的所有示例都要求用户登录才能访问office 365 api令牌。如何在没有用户交互的情况下获取该令牌?您可以使用客户端凭据来请求令牌,而不是OAuth 2.0代码授权流 以下是供您参考的请求: POST https://login.microsoftonline.com/<tenantId>/oauth2/token HTTP/1.1 Content-Type: appli

我想在我的应用程序中添加一项功能,以便它能够在不与用户交互的情况下向outlook.com添加日历事件


我看到的所有示例都要求用户登录才能访问office 365 api令牌。如何在没有用户交互的情况下获取该令牌?

您可以使用客户端凭据来请求令牌,而不是OAuth 2.0代码授权流

以下是供您参考的请求:

POST https://login.microsoftonline.com/<tenantId>/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=<clientId>
&client_secret=<clientSecret>
&resource=https://outlook.office.com

有关Office 365 REST的更多详细信息,请参阅。

如果我理解正确,我需要付费才能获得租户?是的。您可以登录经典Azure门户,并可以从浏览器的URL获取租户ID,如{tenantId}/directoryQuickStart。@FeiXue MSFT Hi,我可以使用此访问令牌从我的office 365帐户读取电子邮件吗?
   public static async Task<string> GetTokenAsync(string resource, string clientId, string secrect)
    {
        string authority = "https://login.microsoftonline.com/{yourTenantName}";
        AuthenticationContext authContext = new AuthenticationContext(authority);

        ClientCredential clientCredential = new ClientCredential(clientId, secrect);
        AuthenticationResult authResult=await authContext.AcquireTokenAsync(resource, clientCredential);
        return authResult.AccessToken;
    }