SlideShare a Scribd company logo
Office 365 API vs SharePoint app model
#SPSBE02
Lieven Iliano, U2U
April 18th, 2015
PlatinumGoldSilver
Thanks to our sponsors!
Agenda
 Introducing Office 365 API
 Developing apps consuming Office 365 API
 Registering Office apps in Azure AD
 Azure AD Authentication & Authorization
 .Net Client Library
 Office 365 apps vs SharePoint apps
 U2U Site Provisioning
Set of REST services:
Microsoft Exchange Online: Mail, Contacts & Calendars
Microsoft OneDrive for Business: My Files
Microsoft SharePoint Online: Sites
Microsoft Azure Active Directory: Authentication, Directory
Graph
Office 365 API
Office 365 API
Directly via REST
.NET Client Library: Windows apps, ASP.NET, WPF, Xamarin…
JavaScript Client Library
Open Source SDK for iOS and Android
Choice of client and development
How does it work?
Applications using Office 365 API need to be registered in Azure
Active Directory
Done manually or from within Visual Studio
2 Types of applications can be registered:
• Web Application (Web API, MVC, Web Forms)
• Native Client (Mobile, Windows apps, Desktop App)
Azure Active Directory
Extensions and Updates:
Microsoft Office 365 API Tools (Part of
Office Developer Tools)
Nuget packages:
Office 365 apps in Visual Studio
O365 Service Desktop App/ Store App/
ASP.NET App
Xamarin Cordova
Users and Graphs Microsoft.Azure.ActiveDirectory.GraphClient Microsoft.Azure.ActiveDirectory.GraphClient.JS
Outlook Services Microsoft.Office365.OutlookServices
SharePoint
Services
Microsoft.Office365.SharePoint
Discovery Client Microsoft.Office365.Discovery
Any Service Microsoft.Office365.OAuth.Xamarin Microsoft.Office365.ClientLib.JS
Add Office 365 API to your project
Office 365 apps in Visual Studio
Configure permissions:
Will automatically configure application in AAD
Adds nuget packages and configuration settings
Office 365 apps in Visual Studio
Your apps are registered in Azure AD
Azure Active Directory
Specify the service and permissions
Office 365 Exchange Online service
Access to Mail, Calendar, Contacts
Office 365 SharePoint Online service
Access to Files in SharePoint Online or OneDrive for Business
Azure Active Directory
OAuth 2.0 Authorization Code Grant flow
App uses access token on your behalf
Oauth 2.0 Client Credentials Grant Flow
App runs with own permissions
Only supported by contacts, calendar & mail
Authentication and Authorization
App redirects user to an AAD authentication endpoint
Authentication for Office 365 Apps
User authenticates and grants consent
Azure AD issues an authorization code
Authentication for Office 365 Apps
User authenticates and grants consent
Authentication for Office 365 Apps
App passes authorization code to AAD
Azure AD returns access and refresh tokens
Authentication for Office 365 Apps
App uses access/refresh tokens to access Office 365 API
Authentication for Office 365 Apps
1. Authenticate by using Active Directory
Authentication Library (ADAL)
2. Discover available App capabilities. Returns only
services App has access to.
3. Connect through Outlook/SharePoint Services
Client
Programming with Office 365 API
Get resource endpoints from discovery service
Programming with Office 365 API
End Point (i.e)
Discovery https://api.office.com/discovery/v1.0/me
Mail
Contacts
Calendar
https://{server_name}/api/{version}/{user_context}
https://outlook.office365.com/api/v1.0/me
OneDrive for
Business
https://{tenant}-my.sharepoint.com/_api/v1.0/me
Sites https://{tenant}.sharepoint.com/{site-path}/_api/v1.0
Discovery client from WebApp
// Get user and object ID from claims
var signInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
var userObjectId =
ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectid
entifier").Value;
// Authority: "https://login.windows.net/<tenant id>"
AuthenticationContext authContext = new AuthenticationContext(SettingsHelper.Authority,
new ADALTokenCache(signInUserId));
// Create Discovery Client
// DiscoveryServiceEndpointUri: "https://api.office.com/discovery/v1.0/me/"
// DiscoveryServiceResourceId: "https://api.office.com/discovery/"
DiscoveryClient discClient = new
DiscoveryClient(SettingsHelper.DiscoveryServiceEndpointUri,
async () =>
{
var authResult =
await authContext.AcquireTokenSilentAsync(
SettingsHelper.DiscoveryServiceResourceId,
new ClientCredential(SettingsHelper.ClientId, SettingsHelper.AppKey),
new UserIdentifier(userObjectId, UserIdentifierType.UniqueId));
return authResult.AccessToken;
});
Discovery client from Native App
authenticationContext = new
AuthenticationContext("https://login.windows.net/Common/");
AuthenticationResult authenticationResult =
authenticationContext.AcquireToken("https://graph.windows.net", ClientId, new
Uri(RedirectUri));
DiscoveryClient discoveryClient = new DiscoveryClient(new
Uri("https://api.office.com/discovery/v1.0/me/"),
async () => { return await
GetAccessTokenForServiceAsync("https://api.office.com/discovery/"); });
private async Task<String> GetAccessTokenForServiceAsync(string serviceResourceId)
{
AuthenticationResult authResult = await
this.authenticationContext.AcquireTokenSilentAsync(serviceResourceId, ClientId);
return authResult.AccessToken;
}
Outlook Services Client
// Discover if resource is available
CapabilityDiscoveryResult dcr = await discClient.DiscoverCapabilityAsync(”Mail”);
// Get the OutlookServicesClient: this gives access to mail, contacts, calendar
return new OutlookServicesClient(dcr.ServiceEndpointUri,
async () =>
{
var authResult =
await authContext.AcquireTokenSilentAsync(
dcr.ServiceResourceId,
new ClientCredential(SettingsHelper.ClientId,
SettingsHelper.AppKey),
new UserIdentifier(userObjectId, UserIdentifierType.UniqueId));
return authResult.AccessToken;
});
Gives access to Mail, Calendar and Contacts
Outlook Services Client
Send email
// Initialize variables
string subject = "Mail sent by using Office 365 APIs";
string recipients = "lieven@u2u365.onmicrosoft.com;els@u2u365.onmicrosoft.com";
string bodyContent = "This email was created from code and was sent using the Office 365
APIs";
// Prepare list of recipients
List<Recipient> toRecipients =
recipients
.Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries)
.Select(
recipient =>
new Recipient
{
EmailAddress = new EmailAddress { Address = recipient, Name =
recipient }
})
.ToList<Recipient>();
// Create draft message
Message draft =
new Message()
{
Subject = subject,
Body = new ItemBody { ContentType = BodyType.Text, Content = bodyContent},
ToRecipients = toRecipients
};
Send email
// Add the message to the draft folder. This results in a call to the service.
// Returns full item but unfortunately you dont have access to it.
await
outlookServicesClient.Me.Folders.GetById("Drafts").Messages.AddMessageAsync(draft);
// Gets the full draft message, including the identifier needed to issue a send mail
request.
// This results in a call to the service.
IMessage updatedDraft = await
outlookServicesClient.Me.Folders.GetById("Drafts").Messages.GetById(draft.Id).ExecuteAsy
nc();
// Issues a send command so that the draft mail is sent to the recipient list.
// This results in a call to the service.
await
outlookServicesClient.Me.Folders.GetById("Drafts").Messages.GetById(updatedDraft.Id).Sen
dAsync();
Get contacts
Add contact
Delete contact
Contacts
// Get paged collection of contacts
IPagedCollection<IContact> contactsPage =
await (outlookServicesClient.Me.Contacts.OrderBy(c => c.FileAs))
.Skip((pageNo - 1) * pageSize).Take(pageSize).ExecuteAsync();
// Create contact
Contact newContact = new Contact();
...
// This results in a call to the service.
await outlookServicesClient.Me.Contacts.AddContactAsync(newContact);
// Get the contact to delete
var contactToDelete = await outlookServicesClient.Me.Contacts[contactId].ExecuteAsync();
// Delete the contact
await contactToDelete.DeleteAsync();
Get events
Add event
Delete Event
Events
// Get paged collection of events
IPagedCollection<IEvent> eventsPage =
await (outlookServicesClient.Me.Calendar.Events.Where(e => e.Start >=
DateTimeOffset.Now.AddDays(-30) && e.Start <= DateTimeOffset.Now.AddDays(30))
.OrderBy(e => e.Start))
.Skip((pageNo - 1) * pageSize).Take(pageSize).ExecuteAsync();
// Create new event and add
Event newEvent = new Event();
await outlookServicesClient.Me.Events.AddEventAsync(newEvent);
// Get the event to delete
IEvent eventToDelete = await
outlookServicesClient.Me.Calendar.Events[selectedEventId].ExecuteAsync();
// Delete the event
await eventToDelete.DeleteAsync(false);
Gives access to Files and OneDrive
SharePoint Services Client
// Discover if resource is available
CapabilityDiscoveryResult dcr = await discClient.DiscoverCapabilityAsync(”MyFiles”);
// Get the SharePointClient: this gives access to OneDrive and Files
return new SharePointClient(dcr.ServiceEndpointUri,
async () =>
{
var authResult =
await authContext.AcquireTokenSilentAsync(
dcr.ServiceResourceId,
new ClientCredential(SettingsHelper.ClientId, SettingsHelper.AppKey),
new UserIdentifier(userObjectId, UserIdentifierType.UniqueId));
return authResult.AccessToken;
});
Get files
// Do paging when fetching
int pageNo = 1;
int pageSize = 25;
// Get the SharePoint client
SharePointClient sharePointClient = await
AuthenticationHelper.EnsureSharePointClientCreatedAsync("MyFiles");
// Get the files (and folders)
IPagedCollection<IItem> filesPage =
await (sharePointClient.Files.Where(i => i.Type == "File"))
.Skip((pageNo - 1) * pageSize).Take(pageSize).ExecuteAsync();
// Get current page
IReadOnlyList<IItem> fileItems = filesPage.CurrentPage;
// Cast to file objects
IEnumerable<File> files = fileItems.Cast<File>();
Add file
// Filename + SharePoint Client
string filename = "sample.txt";
var spClient = await AuthenticationHelper.EnsureSharePointClientCreatedAsync("MyFiles");
// Check if the file exists, delete it if it does
try
{
IItem item = await spClient.Files.GetByPathAsync(filename);
await item.DeleteAsync();
}
catch (ODataErrorException)
{
// fail silently because it doesn't exist.
}
// In this example, we'll create a simple text file and write the current timestamp into it.
string createdTime = "Created at " + DateTime.Now.ToLocalTime().ToString();
byte[] bytes = Encoding.UTF8.GetBytes(createdTime);
using (MemoryStream stream = new MemoryStream(bytes))
{
// If file already exists, we'll get an exception.
File newFile = new File { Name = filename };
// Create the empty file.
await spClient.Files.AddItemAsync(newFile);
// Upload the file contents.
await spClient.Files.GetById(newFile.Id).ToFile().UploadAsync(stream);
}
Type of application
Office 365 apps vs SharePoint apps
Office 365 apps SharePoint apps
External/standalone app Integrated in SharePoint
Accessibility
Office 365 apps vs SharePoint apps
Office 365 apps SharePoint apps
From any link
From the Office 365 App Launcher From the
Office 365 “My apps” page
from a SharePoint/SharePoint Online site
Registration
Office 365 apps vs SharePoint apps
Office 365 apps SharePoint apps
Registration in Azure AD Registration in _layouts/15/appregnew.aspx
Deployment
Office 365 apps vs SharePoint apps
Office 365 apps SharePoint apps
Deployed once to the hosting platform
Mobile/Web/Desktop
*.app package deployed to app catalog and
installed in various SharePoint sites
Accessing CSOM from Office 365 app
private static async Task<string> GetAccessToken(string resource)
{
// Redeem the authorization code from the response for an access token and refresh token.
var principal = ClaimsPrincipal.Current;
var nameIdentifier = principal.FindFirst(ClaimTypes.NameIdentifier).Value;
var tenantId = principal.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value;
AuthenticationContext authContext = new AuthenticationContext(
string.Format("{0}/{1}", SettingsHelper.AuthorizationUri, tenantId),
new ADALTokenCache(nameIdentifier));
var objectId =
principal.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
var result = await authContext.AcquireTokenSilentAsync(
resource,
new ClientCredential(SettingsHelper.ClientId, SettingsHelper.AppKey),
new UserIdentifier(objectId, UserIdentifierType.UniqueId)
);
return result.AccessToken;
}
SharePoint url
Set Authorization header for every request
Start accessing lists, items, …
Permissions are checked
Accessing CSOM from Office 365 app
ClientContext clientContext = new ClientContext(spSiteUrl);
clientContext.ExecutingWebRequest +=
(sender, e) =>
{
e.WebRequestExecutor.WebRequest.Headers["Authorization"] =
"Bearer " + accessToken;
};
Thank you!
Office 365 api vs share point app model

More Related Content

What's hot

Identity Management in SharePoint 2013
Identity Management in SharePoint 2013Identity Management in SharePoint 2013
Identity Management in SharePoint 2013
SPC Adriatics
 
Oauth and SharePoint 2013 Provider Hosted apps
Oauth and SharePoint 2013 Provider Hosted appsOauth and SharePoint 2013 Provider Hosted apps
Oauth and SharePoint 2013 Provider Hosted apps
James Tramel
 
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 2
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 2Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 2
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 2
Vinu Gunasekaran
 
Hooking SharePoint APIs with Android
Hooking SharePoint APIs with AndroidHooking SharePoint APIs with Android
Hooking SharePoint APIs with Android
Kris Wagner
 
Azure AD B2C Webinar Series: Custom Policies Part 1
Azure AD B2C Webinar Series: Custom Policies Part 1Azure AD B2C Webinar Series: Custom Policies Part 1
Azure AD B2C Webinar Series: Custom Policies Part 1
Vinu Gunasekaran
 
The Who, What, Why and How of Active Directory Federation Services (AD FS)
The Who, What, Why and How of Active Directory Federation Services (AD FS)The Who, What, Why and How of Active Directory Federation Services (AD FS)
The Who, What, Why and How of Active Directory Federation Services (AD FS)
Jay Simcox
 
SharePoint 2010, Claims-Based Identity, Facebook, and the Cloud
SharePoint 2010, Claims-Based Identity, Facebook, and the CloudSharePoint 2010, Claims-Based Identity, Facebook, and the Cloud
SharePoint 2010, Claims-Based Identity, Facebook, and the Cloud
Danny Jessee
 
O365Con18 - Introduction to Azure Web Applications - Eric Shupps
O365Con18 - Introduction to Azure Web Applications  - Eric ShuppsO365Con18 - Introduction to Azure Web Applications  - Eric Shupps
O365Con18 - Introduction to Azure Web Applications - Eric Shupps
NCCOMMS
 
AD FS Workshop | Part 2 | Deep Dive
AD FS Workshop | Part 2 | Deep DiveAD FS Workshop | Part 2 | Deep Dive
AD FS Workshop | Part 2 | Deep Dive
Granikos GmbH & Co. KG
 
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy WalkthroughAzure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Vinu Gunasekaran
 
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 1
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 1Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 1
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 1
Vinu Gunasekaran
 
SharePoint 2013 and ADFS
SharePoint 2013 and ADFSSharePoint 2013 and ADFS
SharePoint 2013 and ADFS
Natallia Makarevich
 
O365Con18 - External Collaboration with Azure B2B - Sjoukje Zaal
O365Con18 - External Collaboration with Azure B2B - Sjoukje ZaalO365Con18 - External Collaboration with Azure B2B - Sjoukje Zaal
O365Con18 - External Collaboration with Azure B2B - Sjoukje Zaal
NCCOMMS
 
T28 implementing adfs and hybrid share point
T28   implementing adfs and hybrid share point T28   implementing adfs and hybrid share point
T28 implementing adfs and hybrid share point
Thorbjørn Værp
 
Intelligent Cloud Conference: Azure AD B2C Application security made easy
Intelligent Cloud Conference: Azure AD B2C Application security made easyIntelligent Cloud Conference: Azure AD B2C Application security made easy
Intelligent Cloud Conference: Azure AD B2C Application security made easy
Sjoukje Zaal
 
Claims Based Authentication A Beginners Guide
Claims Based Authentication A Beginners GuideClaims Based Authentication A Beginners Guide
Claims Based Authentication A Beginners GuidePhuong Nguyen
 
OFM AIA FP Implementation View and Case Study
OFM AIA FP Implementation View and Case StudyOFM AIA FP Implementation View and Case Study
OFM AIA FP Implementation View and Case Study
Sreenivasa Setty
 
The bits and pieces of Azure AD B2C
The bits and pieces of Azure AD B2CThe bits and pieces of Azure AD B2C
The bits and pieces of Azure AD B2C
Anton Staykov
 
Claims Based Identity In Share Point 2010
Claims  Based  Identity In  Share Point 2010Claims  Based  Identity In  Share Point 2010
Claims Based Identity In Share Point 2010Steve Sofian
 
Office 365-single-sign-on-with-adfs
Office 365-single-sign-on-with-adfsOffice 365-single-sign-on-with-adfs
Office 365-single-sign-on-with-adfs
amitchachra
 

What's hot (20)

Identity Management in SharePoint 2013
Identity Management in SharePoint 2013Identity Management in SharePoint 2013
Identity Management in SharePoint 2013
 
Oauth and SharePoint 2013 Provider Hosted apps
Oauth and SharePoint 2013 Provider Hosted appsOauth and SharePoint 2013 Provider Hosted apps
Oauth and SharePoint 2013 Provider Hosted apps
 
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 2
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 2Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 2
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 2
 
Hooking SharePoint APIs with Android
Hooking SharePoint APIs with AndroidHooking SharePoint APIs with Android
Hooking SharePoint APIs with Android
 
Azure AD B2C Webinar Series: Custom Policies Part 1
Azure AD B2C Webinar Series: Custom Policies Part 1Azure AD B2C Webinar Series: Custom Policies Part 1
Azure AD B2C Webinar Series: Custom Policies Part 1
 
The Who, What, Why and How of Active Directory Federation Services (AD FS)
The Who, What, Why and How of Active Directory Federation Services (AD FS)The Who, What, Why and How of Active Directory Federation Services (AD FS)
The Who, What, Why and How of Active Directory Federation Services (AD FS)
 
SharePoint 2010, Claims-Based Identity, Facebook, and the Cloud
SharePoint 2010, Claims-Based Identity, Facebook, and the CloudSharePoint 2010, Claims-Based Identity, Facebook, and the Cloud
SharePoint 2010, Claims-Based Identity, Facebook, and the Cloud
 
O365Con18 - Introduction to Azure Web Applications - Eric Shupps
O365Con18 - Introduction to Azure Web Applications  - Eric ShuppsO365Con18 - Introduction to Azure Web Applications  - Eric Shupps
O365Con18 - Introduction to Azure Web Applications - Eric Shupps
 
AD FS Workshop | Part 2 | Deep Dive
AD FS Workshop | Part 2 | Deep DiveAD FS Workshop | Part 2 | Deep Dive
AD FS Workshop | Part 2 | Deep Dive
 
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy WalkthroughAzure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
 
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 1
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 1Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 1
Azure AD B2C Webinar Series: Identity Protocols OIDC and OAuth2 part 1
 
SharePoint 2013 and ADFS
SharePoint 2013 and ADFSSharePoint 2013 and ADFS
SharePoint 2013 and ADFS
 
O365Con18 - External Collaboration with Azure B2B - Sjoukje Zaal
O365Con18 - External Collaboration with Azure B2B - Sjoukje ZaalO365Con18 - External Collaboration with Azure B2B - Sjoukje Zaal
O365Con18 - External Collaboration with Azure B2B - Sjoukje Zaal
 
T28 implementing adfs and hybrid share point
T28   implementing adfs and hybrid share point T28   implementing adfs and hybrid share point
T28 implementing adfs and hybrid share point
 
Intelligent Cloud Conference: Azure AD B2C Application security made easy
Intelligent Cloud Conference: Azure AD B2C Application security made easyIntelligent Cloud Conference: Azure AD B2C Application security made easy
Intelligent Cloud Conference: Azure AD B2C Application security made easy
 
Claims Based Authentication A Beginners Guide
Claims Based Authentication A Beginners GuideClaims Based Authentication A Beginners Guide
Claims Based Authentication A Beginners Guide
 
OFM AIA FP Implementation View and Case Study
OFM AIA FP Implementation View and Case StudyOFM AIA FP Implementation View and Case Study
OFM AIA FP Implementation View and Case Study
 
The bits and pieces of Azure AD B2C
The bits and pieces of Azure AD B2CThe bits and pieces of Azure AD B2C
The bits and pieces of Azure AD B2C
 
Claims Based Identity In Share Point 2010
Claims  Based  Identity In  Share Point 2010Claims  Based  Identity In  Share Point 2010
Claims Based Identity In Share Point 2010
 
Office 365-single-sign-on-with-adfs
Office 365-single-sign-on-with-adfsOffice 365-single-sign-on-with-adfs
Office 365-single-sign-on-with-adfs
 

Viewers also liked

Matthias einig transforming share point farm solutions to the app model
Matthias einig   transforming share point farm solutions to the app modelMatthias einig   transforming share point farm solutions to the app model
Matthias einig transforming share point farm solutions to the app model
BIWUG
 
Sharepointarchitecturereal worldscenariofundamentals-150419043032-conversion-...
Sharepointarchitecturereal worldscenariofundamentals-150419043032-conversion-...Sharepointarchitecturereal worldscenariofundamentals-150419043032-conversion-...
Sharepointarchitecturereal worldscenariofundamentals-150419043032-conversion-...
BIWUG
 
Quickstartguidetojavascriptframeworksforsharepointapps spsbe-2015-15041903264...
Quickstartguidetojavascriptframeworksforsharepointapps spsbe-2015-15041903264...Quickstartguidetojavascriptframeworksforsharepointapps spsbe-2015-15041903264...
Quickstartguidetojavascriptframeworksforsharepointapps spsbe-2015-15041903264...
BIWUG
 
Spsbe16 searchdrivenapplications-150419151108-conversion-gate01
Spsbe16 searchdrivenapplications-150419151108-conversion-gate01Spsbe16 searchdrivenapplications-150419151108-conversion-gate01
Spsbe16 searchdrivenapplications-150419151108-conversion-gate01
BIWUG
 
Spsbe15 high-trust apps for on-premises development
Spsbe15   high-trust apps for on-premises developmentSpsbe15   high-trust apps for on-premises development
Spsbe15 high-trust apps for on-premises development
BIWUG
 
Stop your sharepoint css becoming a disasster today spsbe2015
Stop your sharepoint css becoming a disasster today spsbe2015Stop your sharepoint css becoming a disasster today spsbe2015
Stop your sharepoint css becoming a disasster today spsbe2015
BIWUG
 
Spsbepoelmanssharepointbigdataclean 150421080105-conversion-gate02
Spsbepoelmanssharepointbigdataclean 150421080105-conversion-gate02Spsbepoelmanssharepointbigdataclean 150421080105-conversion-gate02
Spsbepoelmanssharepointbigdataclean 150421080105-conversion-gate02
BIWUG
 
SharePoint Evolution conference 2013 - Bringing SharePoint Information into O...
SharePoint Evolution conference 2013 - Bringing SharePoint Information into O...SharePoint Evolution conference 2013 - Bringing SharePoint Information into O...
SharePoint Evolution conference 2013 - Bringing SharePoint Information into O...
Wes Hackett
 
SPCA2013 - Once you go app you don't go back
SPCA2013 - Once you go app you don't go backSPCA2013 - Once you go app you don't go back
SPCA2013 - Once you go app you don't go back
NCCOMMS
 
Building your first app for share point 2013
Building your first app for share point 2013Building your first app for share point 2013
Building your first app for share point 2013
Muawiyah Shannak
 
Transitioning to SharePoint App Development
Transitioning to SharePoint App DevelopmentTransitioning to SharePoint App Development
Transitioning to SharePoint App Development
Simon Rennocks
 
A Deep-Dive into Real-World SharePoint App Development
A Deep-Dive into Real-World SharePoint App DevelopmentA Deep-Dive into Real-World SharePoint App Development
A Deep-Dive into Real-World SharePoint App Development
SPC Adriatics
 
Share point app architecture for the cloud and on premise
Share point app architecture for the cloud and on premiseShare point app architecture for the cloud and on premise
Share point app architecture for the cloud and on premise
Sonja Madsen
 
Building a Windows Store App for SharePoint 2013
Building a Windows Store App for SharePoint 2013Building a Windows Store App for SharePoint 2013
Building a Windows Store App for SharePoint 2013
Aspenware
 
SharePoint App Store - itunes for you business
SharePoint App Store - itunes for you businessSharePoint App Store - itunes for you business
SharePoint App Store - itunes for you business
Andrew Woodward
 
O365con14 - the new sharepoint online apps - napa in action
O365con14 - the new sharepoint online apps - napa in actionO365con14 - the new sharepoint online apps - napa in action
O365con14 - the new sharepoint online apps - napa in action
NCCOMMS
 
From Trashy to Classy: How The SharePoint 2013 App Model Changes Everything
From Trashy to Classy: How The SharePoint 2013 App Model Changes EverythingFrom Trashy to Classy: How The SharePoint 2013 App Model Changes Everything
From Trashy to Classy: How The SharePoint 2013 App Model Changes Everything
Andrew Clark
 
Developer’s Independence Day: Introducing the SharePoint App Model
Developer’s Independence Day:Introducing the SharePoint App ModelDeveloper’s Independence Day:Introducing the SharePoint App Model
Developer’s Independence Day: Introducing the SharePoint App Model
bgerman
 
Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !
Gilles Pommier
 
Road to the Cloud - Extending your reach with SharePoint and Office 365
Road to the Cloud - Extending your reach with SharePoint and Office 365Road to the Cloud - Extending your reach with SharePoint and Office 365
Road to the Cloud - Extending your reach with SharePoint and Office 365
Talbott Crowell
 

Viewers also liked (20)

Matthias einig transforming share point farm solutions to the app model
Matthias einig   transforming share point farm solutions to the app modelMatthias einig   transforming share point farm solutions to the app model
Matthias einig transforming share point farm solutions to the app model
 
Sharepointarchitecturereal worldscenariofundamentals-150419043032-conversion-...
Sharepointarchitecturereal worldscenariofundamentals-150419043032-conversion-...Sharepointarchitecturereal worldscenariofundamentals-150419043032-conversion-...
Sharepointarchitecturereal worldscenariofundamentals-150419043032-conversion-...
 
Quickstartguidetojavascriptframeworksforsharepointapps spsbe-2015-15041903264...
Quickstartguidetojavascriptframeworksforsharepointapps spsbe-2015-15041903264...Quickstartguidetojavascriptframeworksforsharepointapps spsbe-2015-15041903264...
Quickstartguidetojavascriptframeworksforsharepointapps spsbe-2015-15041903264...
 
Spsbe16 searchdrivenapplications-150419151108-conversion-gate01
Spsbe16 searchdrivenapplications-150419151108-conversion-gate01Spsbe16 searchdrivenapplications-150419151108-conversion-gate01
Spsbe16 searchdrivenapplications-150419151108-conversion-gate01
 
Spsbe15 high-trust apps for on-premises development
Spsbe15   high-trust apps for on-premises developmentSpsbe15   high-trust apps for on-premises development
Spsbe15 high-trust apps for on-premises development
 
Stop your sharepoint css becoming a disasster today spsbe2015
Stop your sharepoint css becoming a disasster today spsbe2015Stop your sharepoint css becoming a disasster today spsbe2015
Stop your sharepoint css becoming a disasster today spsbe2015
 
Spsbepoelmanssharepointbigdataclean 150421080105-conversion-gate02
Spsbepoelmanssharepointbigdataclean 150421080105-conversion-gate02Spsbepoelmanssharepointbigdataclean 150421080105-conversion-gate02
Spsbepoelmanssharepointbigdataclean 150421080105-conversion-gate02
 
SharePoint Evolution conference 2013 - Bringing SharePoint Information into O...
SharePoint Evolution conference 2013 - Bringing SharePoint Information into O...SharePoint Evolution conference 2013 - Bringing SharePoint Information into O...
SharePoint Evolution conference 2013 - Bringing SharePoint Information into O...
 
SPCA2013 - Once you go app you don't go back
SPCA2013 - Once you go app you don't go backSPCA2013 - Once you go app you don't go back
SPCA2013 - Once you go app you don't go back
 
Building your first app for share point 2013
Building your first app for share point 2013Building your first app for share point 2013
Building your first app for share point 2013
 
Transitioning to SharePoint App Development
Transitioning to SharePoint App DevelopmentTransitioning to SharePoint App Development
Transitioning to SharePoint App Development
 
A Deep-Dive into Real-World SharePoint App Development
A Deep-Dive into Real-World SharePoint App DevelopmentA Deep-Dive into Real-World SharePoint App Development
A Deep-Dive into Real-World SharePoint App Development
 
Share point app architecture for the cloud and on premise
Share point app architecture for the cloud and on premiseShare point app architecture for the cloud and on premise
Share point app architecture for the cloud and on premise
 
Building a Windows Store App for SharePoint 2013
Building a Windows Store App for SharePoint 2013Building a Windows Store App for SharePoint 2013
Building a Windows Store App for SharePoint 2013
 
SharePoint App Store - itunes for you business
SharePoint App Store - itunes for you businessSharePoint App Store - itunes for you business
SharePoint App Store - itunes for you business
 
O365con14 - the new sharepoint online apps - napa in action
O365con14 - the new sharepoint online apps - napa in actionO365con14 - the new sharepoint online apps - napa in action
O365con14 - the new sharepoint online apps - napa in action
 
From Trashy to Classy: How The SharePoint 2013 App Model Changes Everything
From Trashy to Classy: How The SharePoint 2013 App Model Changes EverythingFrom Trashy to Classy: How The SharePoint 2013 App Model Changes Everything
From Trashy to Classy: How The SharePoint 2013 App Model Changes Everything
 
Developer’s Independence Day: Introducing the SharePoint App Model
Developer’s Independence Day:Introducing the SharePoint App ModelDeveloper’s Independence Day:Introducing the SharePoint App Model
Developer’s Independence Day: Introducing the SharePoint App Model
 
Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !
 
Road to the Cloud - Extending your reach with SharePoint and Office 365
Road to the Cloud - Extending your reach with SharePoint and Office 365Road to the Cloud - Extending your reach with SharePoint and Office 365
Road to the Cloud - Extending your reach with SharePoint and Office 365
 

Similar to Office 365 api vs share point app model

O365 DEVCamp Los Angeles June 16, 2015 Module 06 Hook into SharePoint APIs wi...
O365 DEVCamp Los Angeles June 16, 2015 Module 06 Hook into SharePoint APIs wi...O365 DEVCamp Los Angeles June 16, 2015 Module 06 Hook into SharePoint APIs wi...
O365 DEVCamp Los Angeles June 16, 2015 Module 06 Hook into SharePoint APIs wi...
Ivan Sanders
 
Deep Dive into Office 365 API for Azure AD
Deep Dive into Office 365 API for Azure ADDeep Dive into Office 365 API for Azure AD
Deep Dive into Office 365 API for Azure AD
Paul Schaeflein
 
Microsoft Azure Identity and O365
Microsoft Azure Identity and O365Microsoft Azure Identity and O365
Microsoft Azure Identity and O365
Kris Wagner
 
Microsoft Graph API with OutSystems Event Subscriptions
Microsoft Graph API with OutSystems Event SubscriptionsMicrosoft Graph API with OutSystems Event Subscriptions
Microsoft Graph API with OutSystems Event Subscriptions
Stefan Weber
 
Salesforce Lightning Components Workshop
Salesforce Lightning Components WorkshopSalesforce Lightning Components Workshop
Salesforce Lightning Components Workshop
Christophe Coenraets
 
Charla desarrollo de apps con sharepoint y office 365
Charla   desarrollo de apps con sharepoint y office 365Charla   desarrollo de apps con sharepoint y office 365
Charla desarrollo de apps con sharepoint y office 365
Luis Valencia
 
Programming Azure Active Directory (DevLink 2014)
Programming Azure Active Directory (DevLink 2014)Programming Azure Active Directory (DevLink 2014)
Programming Azure Active Directory (DevLink 2014)
Michael Collier
 
Get started with building native mobile apps interacting with SharePoint
Get started with building native mobile apps interacting with SharePointGet started with building native mobile apps interacting with SharePoint
Get started with building native mobile apps interacting with SharePoint
Yaroslav Pentsarskyy [MVP]
 
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
André Vala
 
Community call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platformCommunity call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platform
Microsoft 365 Developer
 
Jasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casJasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casellentuck
 
Getting Started with the Office 365 API
Getting Started with the Office 365 APIGetting Started with the Office 365 API
Getting Started with the Office 365 API
Bjørn Harald Rapp [ MVP, MCT ]
 
Asp objects
Asp objectsAsp objects
Asp objects
RajaRajeswari22
 
Building serverless applications with Microsoft Graph and Azure Functions
Building serverless applications with Microsoft Graph and Azure FunctionsBuilding serverless applications with Microsoft Graph and Azure Functions
Building serverless applications with Microsoft Graph and Azure Functions
Dragan Panjkov
 
Amazon API Gateway and AWS Lambda: Better Together
Amazon API Gateway and AWS Lambda: Better TogetherAmazon API Gateway and AWS Lambda: Better Together
Amazon API Gateway and AWS Lambda: Better Together
Danilo Poccia
 
Multi-Factor Authentication for your clouds
Multi-Factor Authentication for your cloudsMulti-Factor Authentication for your clouds
Multi-Factor Authentication for your clouds
Alexandre Verkinderen
 
Lightning Components Workshop v2
Lightning Components Workshop v2Lightning Components Workshop v2
Lightning Components Workshop v2
Christophe Coenraets
 
Introduction to the SharePoint Client Object Model and REST API
Introduction to the SharePoint Client Object Model and REST APIIntroduction to the SharePoint Client Object Model and REST API
Introduction to the SharePoint Client Object Model and REST API
Rob Windsor
 
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Chris Richardson
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
Kanda Runapongsa Saikaew
 

Similar to Office 365 api vs share point app model (20)

O365 DEVCamp Los Angeles June 16, 2015 Module 06 Hook into SharePoint APIs wi...
O365 DEVCamp Los Angeles June 16, 2015 Module 06 Hook into SharePoint APIs wi...O365 DEVCamp Los Angeles June 16, 2015 Module 06 Hook into SharePoint APIs wi...
O365 DEVCamp Los Angeles June 16, 2015 Module 06 Hook into SharePoint APIs wi...
 
Deep Dive into Office 365 API for Azure AD
Deep Dive into Office 365 API for Azure ADDeep Dive into Office 365 API for Azure AD
Deep Dive into Office 365 API for Azure AD
 
Microsoft Azure Identity and O365
Microsoft Azure Identity and O365Microsoft Azure Identity and O365
Microsoft Azure Identity and O365
 
Microsoft Graph API with OutSystems Event Subscriptions
Microsoft Graph API with OutSystems Event SubscriptionsMicrosoft Graph API with OutSystems Event Subscriptions
Microsoft Graph API with OutSystems Event Subscriptions
 
Salesforce Lightning Components Workshop
Salesforce Lightning Components WorkshopSalesforce Lightning Components Workshop
Salesforce Lightning Components Workshop
 
Charla desarrollo de apps con sharepoint y office 365
Charla   desarrollo de apps con sharepoint y office 365Charla   desarrollo de apps con sharepoint y office 365
Charla desarrollo de apps con sharepoint y office 365
 
Programming Azure Active Directory (DevLink 2014)
Programming Azure Active Directory (DevLink 2014)Programming Azure Active Directory (DevLink 2014)
Programming Azure Active Directory (DevLink 2014)
 
Get started with building native mobile apps interacting with SharePoint
Get started with building native mobile apps interacting with SharePointGet started with building native mobile apps interacting with SharePoint
Get started with building native mobile apps interacting with SharePoint
 
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
 
Community call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platformCommunity call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platform
 
Jasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casJasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-cas
 
Getting Started with the Office 365 API
Getting Started with the Office 365 APIGetting Started with the Office 365 API
Getting Started with the Office 365 API
 
Asp objects
Asp objectsAsp objects
Asp objects
 
Building serverless applications with Microsoft Graph and Azure Functions
Building serverless applications with Microsoft Graph and Azure FunctionsBuilding serverless applications with Microsoft Graph and Azure Functions
Building serverless applications with Microsoft Graph and Azure Functions
 
Amazon API Gateway and AWS Lambda: Better Together
Amazon API Gateway and AWS Lambda: Better TogetherAmazon API Gateway and AWS Lambda: Better Together
Amazon API Gateway and AWS Lambda: Better Together
 
Multi-Factor Authentication for your clouds
Multi-Factor Authentication for your cloudsMulti-Factor Authentication for your clouds
Multi-Factor Authentication for your clouds
 
Lightning Components Workshop v2
Lightning Components Workshop v2Lightning Components Workshop v2
Lightning Components Workshop v2
 
Introduction to the SharePoint Client Object Model and REST API
Introduction to the SharePoint Client Object Model and REST APIIntroduction to the SharePoint Client Object Model and REST API
Introduction to the SharePoint Client Object Model and REST API
 
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
 

More from BIWUG

Biwug20190425
Biwug20190425Biwug20190425
Biwug20190425
BIWUG
 
Working with PowerShell, Visual Studio Code and Github for the reluctant IT Pro
Working with PowerShell, Visual Studio Code and Github for the reluctant IT ProWorking with PowerShell, Visual Studio Code and Github for the reluctant IT Pro
Working with PowerShell, Visual Studio Code and Github for the reluctant IT Pro
BIWUG
 
Global Office 365 Developer Bootcamp
Global Office 365 Developer BootcampGlobal Office 365 Developer Bootcamp
Global Office 365 Developer Bootcamp
BIWUG
 
Deep dive into advanced teams development
Deep dive into advanced teams developmentDeep dive into advanced teams development
Deep dive into advanced teams development
BIWUG
 
SharePoint wizards - no magic needed, just use Microsoft Flow
SharePoint wizards - no magic needed, just use Microsoft FlowSharePoint wizards - no magic needed, just use Microsoft Flow
SharePoint wizards - no magic needed, just use Microsoft Flow
BIWUG
 
Make IT Pro's great again: Microsoft Azure for the SharePoint professional
Make IT Pro's great again: Microsoft Azure for the SharePoint professionalMake IT Pro's great again: Microsoft Azure for the SharePoint professional
Make IT Pro's great again: Microsoft Azure for the SharePoint professional
BIWUG
 
Modern collaboration in teams and projects with Microsoft 365
Modern collaboration in teams and projects with Microsoft 365Modern collaboration in teams and projects with Microsoft 365
Modern collaboration in teams and projects with Microsoft 365
BIWUG
 
Mining SharePoint data with PowerBI
Mining SharePoint data with PowerBIMining SharePoint data with PowerBI
Mining SharePoint data with PowerBI
BIWUG
 
Don't simply deploy, transform! Build your digital workplace in Office 365
Don't simply deploy, transform! Build your digital workplace in Office 365Don't simply deploy, transform! Build your digital workplace in Office 365
Don't simply deploy, transform! Build your digital workplace in Office 365
BIWUG
 
Connect SharePoint Framework solutions to APIs secured with Azure AD
Connect SharePoint Framework solutions to APIs secured with Azure ADConnect SharePoint Framework solutions to APIs secured with Azure AD
Connect SharePoint Framework solutions to APIs secured with Azure AD
BIWUG
 
Cloud First. Be Prepared
Cloud First. Be PreparedCloud First. Be Prepared
Cloud First. Be Prepared
BIWUG
 
APIs, APIs Everywhere!
APIs, APIs Everywhere!APIs, APIs Everywhere!
APIs, APIs Everywhere!
BIWUG
 
Advanced PowerShell for Office 365
Advanced PowerShell for Office 365Advanced PowerShell for Office 365
Advanced PowerShell for Office 365
BIWUG
 
New era of customizing site provisioning
New era of customizing site provisioningNew era of customizing site provisioning
New era of customizing site provisioning
BIWUG
 
Understanding SharePoint Framework Extensions
Understanding SharePoint Framework ExtensionsUnderstanding SharePoint Framework Extensions
Understanding SharePoint Framework Extensions
BIWUG
 
Microsoft Flow in Real World Projects: 2 Years later & What's next
Microsoft Flow in Real World Projects: 2 Years later & What's nextMicrosoft Flow in Real World Projects: 2 Years later & What's next
Microsoft Flow in Real World Projects: 2 Years later & What's next
BIWUG
 
Microsoft Stream - Your enterprise video portal unleashed
Microsoft Stream - Your enterprise video portal unleashedMicrosoft Stream - Your enterprise video portal unleashed
Microsoft Stream - Your enterprise video portal unleashed
BIWUG
 
What's new in SharePoint Server 2019
What's new in SharePoint Server 2019What's new in SharePoint Server 2019
What's new in SharePoint Server 2019
BIWUG
 
Why you shouldn't probably care about Machine Learning
Why you shouldn't probably care about Machine LearningWhy you shouldn't probably care about Machine Learning
Why you shouldn't probably care about Machine Learning
BIWUG
 
Transforming your classic team sites in group connected team sites
Transforming your classic team sites in group connected team sitesTransforming your classic team sites in group connected team sites
Transforming your classic team sites in group connected team sites
BIWUG
 

More from BIWUG (20)

Biwug20190425
Biwug20190425Biwug20190425
Biwug20190425
 
Working with PowerShell, Visual Studio Code and Github for the reluctant IT Pro
Working with PowerShell, Visual Studio Code and Github for the reluctant IT ProWorking with PowerShell, Visual Studio Code and Github for the reluctant IT Pro
Working with PowerShell, Visual Studio Code and Github for the reluctant IT Pro
 
Global Office 365 Developer Bootcamp
Global Office 365 Developer BootcampGlobal Office 365 Developer Bootcamp
Global Office 365 Developer Bootcamp
 
Deep dive into advanced teams development
Deep dive into advanced teams developmentDeep dive into advanced teams development
Deep dive into advanced teams development
 
SharePoint wizards - no magic needed, just use Microsoft Flow
SharePoint wizards - no magic needed, just use Microsoft FlowSharePoint wizards - no magic needed, just use Microsoft Flow
SharePoint wizards - no magic needed, just use Microsoft Flow
 
Make IT Pro's great again: Microsoft Azure for the SharePoint professional
Make IT Pro's great again: Microsoft Azure for the SharePoint professionalMake IT Pro's great again: Microsoft Azure for the SharePoint professional
Make IT Pro's great again: Microsoft Azure for the SharePoint professional
 
Modern collaboration in teams and projects with Microsoft 365
Modern collaboration in teams and projects with Microsoft 365Modern collaboration in teams and projects with Microsoft 365
Modern collaboration in teams and projects with Microsoft 365
 
Mining SharePoint data with PowerBI
Mining SharePoint data with PowerBIMining SharePoint data with PowerBI
Mining SharePoint data with PowerBI
 
Don't simply deploy, transform! Build your digital workplace in Office 365
Don't simply deploy, transform! Build your digital workplace in Office 365Don't simply deploy, transform! Build your digital workplace in Office 365
Don't simply deploy, transform! Build your digital workplace in Office 365
 
Connect SharePoint Framework solutions to APIs secured with Azure AD
Connect SharePoint Framework solutions to APIs secured with Azure ADConnect SharePoint Framework solutions to APIs secured with Azure AD
Connect SharePoint Framework solutions to APIs secured with Azure AD
 
Cloud First. Be Prepared
Cloud First. Be PreparedCloud First. Be Prepared
Cloud First. Be Prepared
 
APIs, APIs Everywhere!
APIs, APIs Everywhere!APIs, APIs Everywhere!
APIs, APIs Everywhere!
 
Advanced PowerShell for Office 365
Advanced PowerShell for Office 365Advanced PowerShell for Office 365
Advanced PowerShell for Office 365
 
New era of customizing site provisioning
New era of customizing site provisioningNew era of customizing site provisioning
New era of customizing site provisioning
 
Understanding SharePoint Framework Extensions
Understanding SharePoint Framework ExtensionsUnderstanding SharePoint Framework Extensions
Understanding SharePoint Framework Extensions
 
Microsoft Flow in Real World Projects: 2 Years later & What's next
Microsoft Flow in Real World Projects: 2 Years later & What's nextMicrosoft Flow in Real World Projects: 2 Years later & What's next
Microsoft Flow in Real World Projects: 2 Years later & What's next
 
Microsoft Stream - Your enterprise video portal unleashed
Microsoft Stream - Your enterprise video portal unleashedMicrosoft Stream - Your enterprise video portal unleashed
Microsoft Stream - Your enterprise video portal unleashed
 
What's new in SharePoint Server 2019
What's new in SharePoint Server 2019What's new in SharePoint Server 2019
What's new in SharePoint Server 2019
 
Why you shouldn't probably care about Machine Learning
Why you shouldn't probably care about Machine LearningWhy you shouldn't probably care about Machine Learning
Why you shouldn't probably care about Machine Learning
 
Transforming your classic team sites in group connected team sites
Transforming your classic team sites in group connected team sitesTransforming your classic team sites in group connected team sites
Transforming your classic team sites in group connected team sites
 

Recently uploaded

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 

Recently uploaded (20)

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 

Office 365 api vs share point app model

  • 1. Office 365 API vs SharePoint app model #SPSBE02 Lieven Iliano, U2U April 18th, 2015
  • 3. Agenda  Introducing Office 365 API  Developing apps consuming Office 365 API  Registering Office apps in Azure AD  Azure AD Authentication & Authorization  .Net Client Library  Office 365 apps vs SharePoint apps  U2U Site Provisioning
  • 4.
  • 5. Set of REST services: Microsoft Exchange Online: Mail, Contacts & Calendars Microsoft OneDrive for Business: My Files Microsoft SharePoint Online: Sites Microsoft Azure Active Directory: Authentication, Directory Graph Office 365 API
  • 7. Directly via REST .NET Client Library: Windows apps, ASP.NET, WPF, Xamarin… JavaScript Client Library Open Source SDK for iOS and Android Choice of client and development
  • 8. How does it work?
  • 9. Applications using Office 365 API need to be registered in Azure Active Directory Done manually or from within Visual Studio 2 Types of applications can be registered: • Web Application (Web API, MVC, Web Forms) • Native Client (Mobile, Windows apps, Desktop App) Azure Active Directory
  • 10.
  • 11.
  • 12. Extensions and Updates: Microsoft Office 365 API Tools (Part of Office Developer Tools) Nuget packages: Office 365 apps in Visual Studio O365 Service Desktop App/ Store App/ ASP.NET App Xamarin Cordova Users and Graphs Microsoft.Azure.ActiveDirectory.GraphClient Microsoft.Azure.ActiveDirectory.GraphClient.JS Outlook Services Microsoft.Office365.OutlookServices SharePoint Services Microsoft.Office365.SharePoint Discovery Client Microsoft.Office365.Discovery Any Service Microsoft.Office365.OAuth.Xamarin Microsoft.Office365.ClientLib.JS
  • 13. Add Office 365 API to your project Office 365 apps in Visual Studio
  • 14. Configure permissions: Will automatically configure application in AAD Adds nuget packages and configuration settings Office 365 apps in Visual Studio
  • 15.
  • 16.
  • 17. Your apps are registered in Azure AD Azure Active Directory
  • 18. Specify the service and permissions Office 365 Exchange Online service Access to Mail, Calendar, Contacts Office 365 SharePoint Online service Access to Files in SharePoint Online or OneDrive for Business Azure Active Directory
  • 19.
  • 20.
  • 21. OAuth 2.0 Authorization Code Grant flow App uses access token on your behalf Oauth 2.0 Client Credentials Grant Flow App runs with own permissions Only supported by contacts, calendar & mail Authentication and Authorization
  • 22. App redirects user to an AAD authentication endpoint Authentication for Office 365 Apps
  • 23. User authenticates and grants consent Azure AD issues an authorization code Authentication for Office 365 Apps
  • 24. User authenticates and grants consent Authentication for Office 365 Apps
  • 25. App passes authorization code to AAD Azure AD returns access and refresh tokens Authentication for Office 365 Apps
  • 26. App uses access/refresh tokens to access Office 365 API Authentication for Office 365 Apps
  • 27. 1. Authenticate by using Active Directory Authentication Library (ADAL) 2. Discover available App capabilities. Returns only services App has access to. 3. Connect through Outlook/SharePoint Services Client Programming with Office 365 API
  • 28. Get resource endpoints from discovery service Programming with Office 365 API End Point (i.e) Discovery https://api.office.com/discovery/v1.0/me Mail Contacts Calendar https://{server_name}/api/{version}/{user_context} https://outlook.office365.com/api/v1.0/me OneDrive for Business https://{tenant}-my.sharepoint.com/_api/v1.0/me Sites https://{tenant}.sharepoint.com/{site-path}/_api/v1.0
  • 29. Discovery client from WebApp // Get user and object ID from claims var signInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value; var userObjectId = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectid entifier").Value; // Authority: "https://login.windows.net/<tenant id>" AuthenticationContext authContext = new AuthenticationContext(SettingsHelper.Authority, new ADALTokenCache(signInUserId)); // Create Discovery Client // DiscoveryServiceEndpointUri: "https://api.office.com/discovery/v1.0/me/" // DiscoveryServiceResourceId: "https://api.office.com/discovery/" DiscoveryClient discClient = new DiscoveryClient(SettingsHelper.DiscoveryServiceEndpointUri, async () => { var authResult = await authContext.AcquireTokenSilentAsync( SettingsHelper.DiscoveryServiceResourceId, new ClientCredential(SettingsHelper.ClientId, SettingsHelper.AppKey), new UserIdentifier(userObjectId, UserIdentifierType.UniqueId)); return authResult.AccessToken; });
  • 30. Discovery client from Native App authenticationContext = new AuthenticationContext("https://login.windows.net/Common/"); AuthenticationResult authenticationResult = authenticationContext.AcquireToken("https://graph.windows.net", ClientId, new Uri(RedirectUri)); DiscoveryClient discoveryClient = new DiscoveryClient(new Uri("https://api.office.com/discovery/v1.0/me/"), async () => { return await GetAccessTokenForServiceAsync("https://api.office.com/discovery/"); }); private async Task<String> GetAccessTokenForServiceAsync(string serviceResourceId) { AuthenticationResult authResult = await this.authenticationContext.AcquireTokenSilentAsync(serviceResourceId, ClientId); return authResult.AccessToken; }
  • 31. Outlook Services Client // Discover if resource is available CapabilityDiscoveryResult dcr = await discClient.DiscoverCapabilityAsync(”Mail”); // Get the OutlookServicesClient: this gives access to mail, contacts, calendar return new OutlookServicesClient(dcr.ServiceEndpointUri, async () => { var authResult = await authContext.AcquireTokenSilentAsync( dcr.ServiceResourceId, new ClientCredential(SettingsHelper.ClientId, SettingsHelper.AppKey), new UserIdentifier(userObjectId, UserIdentifierType.UniqueId)); return authResult.AccessToken; });
  • 32. Gives access to Mail, Calendar and Contacts Outlook Services Client
  • 33. Send email // Initialize variables string subject = "Mail sent by using Office 365 APIs"; string recipients = "lieven@u2u365.onmicrosoft.com;els@u2u365.onmicrosoft.com"; string bodyContent = "This email was created from code and was sent using the Office 365 APIs"; // Prepare list of recipients List<Recipient> toRecipients = recipients .Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries) .Select( recipient => new Recipient { EmailAddress = new EmailAddress { Address = recipient, Name = recipient } }) .ToList<Recipient>(); // Create draft message Message draft = new Message() { Subject = subject, Body = new ItemBody { ContentType = BodyType.Text, Content = bodyContent}, ToRecipients = toRecipients };
  • 34. Send email // Add the message to the draft folder. This results in a call to the service. // Returns full item but unfortunately you dont have access to it. await outlookServicesClient.Me.Folders.GetById("Drafts").Messages.AddMessageAsync(draft); // Gets the full draft message, including the identifier needed to issue a send mail request. // This results in a call to the service. IMessage updatedDraft = await outlookServicesClient.Me.Folders.GetById("Drafts").Messages.GetById(draft.Id).ExecuteAsy nc(); // Issues a send command so that the draft mail is sent to the recipient list. // This results in a call to the service. await outlookServicesClient.Me.Folders.GetById("Drafts").Messages.GetById(updatedDraft.Id).Sen dAsync();
  • 35. Get contacts Add contact Delete contact Contacts // Get paged collection of contacts IPagedCollection<IContact> contactsPage = await (outlookServicesClient.Me.Contacts.OrderBy(c => c.FileAs)) .Skip((pageNo - 1) * pageSize).Take(pageSize).ExecuteAsync(); // Create contact Contact newContact = new Contact(); ... // This results in a call to the service. await outlookServicesClient.Me.Contacts.AddContactAsync(newContact); // Get the contact to delete var contactToDelete = await outlookServicesClient.Me.Contacts[contactId].ExecuteAsync(); // Delete the contact await contactToDelete.DeleteAsync();
  • 36. Get events Add event Delete Event Events // Get paged collection of events IPagedCollection<IEvent> eventsPage = await (outlookServicesClient.Me.Calendar.Events.Where(e => e.Start >= DateTimeOffset.Now.AddDays(-30) && e.Start <= DateTimeOffset.Now.AddDays(30)) .OrderBy(e => e.Start)) .Skip((pageNo - 1) * pageSize).Take(pageSize).ExecuteAsync(); // Create new event and add Event newEvent = new Event(); await outlookServicesClient.Me.Events.AddEventAsync(newEvent); // Get the event to delete IEvent eventToDelete = await outlookServicesClient.Me.Calendar.Events[selectedEventId].ExecuteAsync(); // Delete the event await eventToDelete.DeleteAsync(false);
  • 37. Gives access to Files and OneDrive SharePoint Services Client // Discover if resource is available CapabilityDiscoveryResult dcr = await discClient.DiscoverCapabilityAsync(”MyFiles”); // Get the SharePointClient: this gives access to OneDrive and Files return new SharePointClient(dcr.ServiceEndpointUri, async () => { var authResult = await authContext.AcquireTokenSilentAsync( dcr.ServiceResourceId, new ClientCredential(SettingsHelper.ClientId, SettingsHelper.AppKey), new UserIdentifier(userObjectId, UserIdentifierType.UniqueId)); return authResult.AccessToken; });
  • 38. Get files // Do paging when fetching int pageNo = 1; int pageSize = 25; // Get the SharePoint client SharePointClient sharePointClient = await AuthenticationHelper.EnsureSharePointClientCreatedAsync("MyFiles"); // Get the files (and folders) IPagedCollection<IItem> filesPage = await (sharePointClient.Files.Where(i => i.Type == "File")) .Skip((pageNo - 1) * pageSize).Take(pageSize).ExecuteAsync(); // Get current page IReadOnlyList<IItem> fileItems = filesPage.CurrentPage; // Cast to file objects IEnumerable<File> files = fileItems.Cast<File>();
  • 39. Add file // Filename + SharePoint Client string filename = "sample.txt"; var spClient = await AuthenticationHelper.EnsureSharePointClientCreatedAsync("MyFiles"); // Check if the file exists, delete it if it does try { IItem item = await spClient.Files.GetByPathAsync(filename); await item.DeleteAsync(); } catch (ODataErrorException) { // fail silently because it doesn't exist. } // In this example, we'll create a simple text file and write the current timestamp into it. string createdTime = "Created at " + DateTime.Now.ToLocalTime().ToString(); byte[] bytes = Encoding.UTF8.GetBytes(createdTime); using (MemoryStream stream = new MemoryStream(bytes)) { // If file already exists, we'll get an exception. File newFile = new File { Name = filename }; // Create the empty file. await spClient.Files.AddItemAsync(newFile); // Upload the file contents. await spClient.Files.GetById(newFile.Id).ToFile().UploadAsync(stream); }
  • 40.
  • 41. Type of application Office 365 apps vs SharePoint apps Office 365 apps SharePoint apps External/standalone app Integrated in SharePoint
  • 42. Accessibility Office 365 apps vs SharePoint apps Office 365 apps SharePoint apps From any link From the Office 365 App Launcher From the Office 365 “My apps” page from a SharePoint/SharePoint Online site
  • 43. Registration Office 365 apps vs SharePoint apps Office 365 apps SharePoint apps Registration in Azure AD Registration in _layouts/15/appregnew.aspx
  • 44. Deployment Office 365 apps vs SharePoint apps Office 365 apps SharePoint apps Deployed once to the hosting platform Mobile/Web/Desktop *.app package deployed to app catalog and installed in various SharePoint sites
  • 45.
  • 46. Accessing CSOM from Office 365 app private static async Task<string> GetAccessToken(string resource) { // Redeem the authorization code from the response for an access token and refresh token. var principal = ClaimsPrincipal.Current; var nameIdentifier = principal.FindFirst(ClaimTypes.NameIdentifier).Value; var tenantId = principal.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value; AuthenticationContext authContext = new AuthenticationContext( string.Format("{0}/{1}", SettingsHelper.AuthorizationUri, tenantId), new ADALTokenCache(nameIdentifier)); var objectId = principal.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value; var result = await authContext.AcquireTokenSilentAsync( resource, new ClientCredential(SettingsHelper.ClientId, SettingsHelper.AppKey), new UserIdentifier(objectId, UserIdentifierType.UniqueId) ); return result.AccessToken; } SharePoint url
  • 47. Set Authorization header for every request Start accessing lists, items, … Permissions are checked Accessing CSOM from Office 365 app ClientContext clientContext = new ClientContext(spSiteUrl); clientContext.ExecutingWebRequest += (sender, e) => { e.WebRequestExecutor.WebRequest.Headers["Authorization"] = "Bearer " + accessToken; };
  • 48.

Editor's Notes

  1. Template may not be modified Twitter hashtag: #spsbe for all sessions
  2. https://msdn.microsoft.com/en-us/office/office365/api/api-catalog https://outlook.office365.com/api/v1.0/me/messages https://u2u365-my.sharepoint.com/_api/v1.0/me/files
  3. Microsoft.IdentityModel.Clients.ActiveDirectory
  4. Your app gets the user's email address. It contacts Discovery Service with email address and the set of scopes the app wants to access.
  5. The app goes to the Azure AD authorization endpoint and the user authenticates and grants consent (if consent has not been granted before). Azure AD issues an authorization code.
  6. Your app redeems the authorization code. Azure returns an access token and a refresh token.
  7. Your app can now call Office 365 APIs using the URI from Discovery Service and the access token. Office 365 returns Http Response.