Office 365 API编程身份验证

Office 365 API编程身份验证,api,authentication,office365,Api,Authentication,Office365,我对Office 365 API非常陌生-我希望以编程方式进行身份验证,但我测试的示例需要浏览登录页面。这可能吗?如果可能的话,有人能给我举一些例子吗(我主要是在日历上用这个)。谢谢。Azure AD的OAuth2.0有两个基本身份验证流程 第一个是授权代码授权流,用于本机客户端和Azure Active Directory(Azure AD)中的网站访问web API。在此流中,用户将访问权委托给客户端应用程序 第二种是客户端凭据授予流,它允许web服务(机密客户端)在调用另一个web服务时使

我对Office 365 API非常陌生-我希望以编程方式进行身份验证,但我测试的示例需要浏览登录页面。这可能吗?如果可能的话,有人能给我举一些例子吗(我主要是在日历上用这个)。谢谢。

Azure AD的OAuth2.0有两个基本身份验证流程

第一个是授权代码授权流,用于本机客户端和Azure Active Directory(Azure AD)中的网站访问web API。在此流中,用户将访问权委托给客户端应用程序

第二种是客户端凭据授予流,它允许web服务(机密客户端)在调用另一个web服务时使用自己的凭据进行身份验证,而不是模拟用户。在此场景中,客户机通常是中间层web服务、守护程序服务或web站点

下面是一个示例,它使用客户端凭据授权流从特定用户获取消息供您参考:

    string clientId = "";
    string clientsecret = "";
    string tenant = "yourdomain.onmicrosoft.com";

    var authUri = "https://login.microsoftonline.com/"+tenant+"/oauth2/token";
    var RESOURCE_URL = "https://outlook.office.com";

    HttpClient client = new HttpClient();
    var authContext = new AuthenticationContext(authUri);
    var credential = new ClientCredential(clientId: clientId, clientSecret: clientsecret);
    var result = authContext.AcquireTokenAsync(RESOURCE_URL, credential).Result;
    client.DefaultRequestHeaders.Add("Authorization", "bearer " + result.AccessToken);


     var response = client.GetAsync("https://outlook.office.com/api/v2.0/users/user1@yourdomain.onmicrosoft/messages").Result;

    Console.WriteLine(response.Content.ReadAsStringAsync().Result);

要使用Office 365 REST API,我们需要先注册应用程序。有关详细信息,请参阅。

询问代码/软件/文档/示例等。。我不确定这是否有效——我读到的所有信息都表明,您需要在客户端凭据流中使用X.509证书。客户端凭据流支持两种方式。一个是使用秘密,另一个是使用证书。@FeiXue-我认为授权码授权类型也会显示在登录屏幕上,用户需要在其中输入其凭据。随后,它会显示一个授权页面,用户需要接受该页面才能继续操作。如果凭据作为请求参数在api调用中传递,那么资源凭据授予类型在这里不是很有用吗?