Get Started with Exchange Online REST APIs for Office 365 development in .NET
If you intend to try your hands on building an application that interacts with Exchange Online and utilizes Office 365 REST APIs for mail, calendars, and contacts, the steps below should help.
Get your Office 365 tenant developer account (if you need more than one license, link your tenant to 30 days free trial of Office)
Add an Azure subscription – you can use your MSDN subscription for it
https://msdn.microsoft.com/subscriptions/manage/default.aspx
https://msdn.microsoft.com/en-us/subscriptions/dn531048.aspx
Getting Started with Your MSDN Subscription
https://msdn.microsoft.com/en-us/library/dd364989.aspxRegister your app in Azure AD and add appropriate permissions:
a. From Visual Studio 2013 using Connected service: https://msdn.microsoft.com/office/office365/HowTo/adding-service-to-your-Visual-Studio-project and https://blogs.msdn.com/b/visualstudio/archive/2014/11/19/connecting-to-cloud-services.aspx
b. From Windows Azure portal for O365 (to manually register it): https://msdn.microsoft.com/office/office365/HowTo/add-common-consent-manually
c. Outlook Dev Portal App Registration Tool
https://dev.outlook.com/AppRegistrationBuild your application. If you are using Visual Studio to do so, you’ll need to install ADAL library through Nuget. Please also make sure you use .NET 4.5 or above if you are using latest ADAL library.
Tools you can use to understand how the flow works. You’ve an option to play with sample data or sign in and work with your own Office 365 tenant account.
(Only for authorization grant flow)
Understanding Permissions:
Office 365 application manifest and permission details
https://msdn.microsoft.com/office/office365/HowTo/application-manifest
Understanding Oauth grant flows:
There are two grant flows:
Authorization code grant flow – this is said to run in delegation mode. The user gives assent to the app to access his own mailbox.
Please see https://blogs.msdn.com/b/exchangedev/archive/2014/09/24/10510847.aspx and https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx
Client Credential flow – this is said to run in app-only mode. Also known as Daemon app or service app. The admin (tenant administrator/ global administrator) needs to give assent to the app.
Please see https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx and https://blogs.msdn.com/b/exchangedev/archive/2015/01/22/building-demon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow.aspx
Important Samples in .NET:
Authorization grant flow:
https://dev.outlook.com/RestGettingStarted/Tutorial/dotnet
Client credential flow:
https://github.com/mattleib/o365api-as-apponly-webapp