从.net控制台应用程序调用Office 365 REST API

时间:2016-01-11 13:18:36

标签: c# active-directory office365 outlook-restapi office365-restapi

请注意,此问题与通用REST服务调用无关。它关于特定的Office 365 REST服务API。

具体而言,我需要利用“联系人”#39; API在这里:https://msdn.microsoft.com/office/office365/APi/contacts-rest-operations#UsingtheContactsRESTAPI

我想知道如何在控制台应用程序中使用Office 365 REST服务。有一些工具可以处理来自Web,移动和Windows应用商店的API。但是我找不到控制台应用程序的资源。

我在应用程序注册门户上创建了应用程序:https://apps.dev.microsoft.com

所以我已经拥有应用程序ID,应用程序秘密,平台移动应用程序(客户端ID,重定向URI)

我想我需要身份验证令牌(我有用户名,密码)。 并使用它来调用REST服务。

1 个答案:

答案 0 :(得分:4)

目前,对于Office 365 Mail,Calendar和Contacts API,支持两个版本:v1v2

关于REST API v2

Office 365 API服务使用Azure Active Directory(Azure AD)为用户提供安全的身份验证和授权。 Office 365数据。 Azure AD根据OAuth 2.0 protocol实现授权流程。

要允许您的应用程序访问Office 365 API,您需要register your application with Azure AD

如果是API v1版本,因为它支持Basic身份验证,以下示例演示了如何使用用户凭据读取控制台应用中的联系人:

示例

class Program
{
    static void Main(string[] args)
    {

        ReadContacts().Wait();
    }

    private static async Task ReadContacts()
    {
        var handler = new HttpClientHandler();
        handler.Credentials = new NetworkCredential()
        {
            UserName = ConfigurationManager.AppSettings["UserName"],
            Password = ConfigurationManager.AppSettings["Password"]
        };

        using (var client = new HttpClient(handler))
        {
            var url = "https://outlook.office365.com/api/v1.0/me/contacts";
            var result = await client.GetStringAsync(url);

            var data = JObject.Parse(result);

            foreach (var item in data["value"])
            {
                Console.WriteLine(item["DisplayName"]);
            }
        }
    }
}