Créer une application Cordova à l'aide du service de découverte O365 et de l'API Files
Dans cette rubrique, vous apprendrez à tirer profit de certaines des nouvelles API présentes dans les bibliothèques clientes pour Office 365 dans une application générée à l'aide de Visual Studio Tools for Apache Cordova.
Outils des API Office 365 pour Visual Studio 2013
Si vous essayez de consommer les API Office 365 pour la première fois dans un flux de travail d'application Cordova, suivez les instructions fournies dans la documentation pour installer les outils des API Office 365 pour Visual Studio Preview et pour ajouter le service dans votre projet.
Office 365 fournit des API reposant sur REST qui permettent aux développeurs d'accéder à des ressources Office telles qu'un calendrier, des contacts, la messagerie, des fichiers, etc. Vous pouvez programmer directement par rapport aux API REST pour interagir avec Office 365, mais si vous utilisez les API REST, vous devez écrire et conserver du code relatif à la gestion des jetons d'authentification, à la construction des URL appropriées, à l'exécution d'une requête pour déterminer l'API à laquelle vous voulez accéder et à la réalisation d'autres tâches. En utilisant les bibliothèques clientes Office 365 pour accéder aux API Office 365 à la place de REST, vous réduisez la complexité du code que vous devez écrire dans votre application Cordova.
La dernière mise à jour des outils des API Office 365 pour Visual Studio Preview inclut une prise en charge des services de fichiers SharePoint, qui fournit l'accès au service MyFiles. Outre les services SharePoint, la prise en charge du service de découverte O365 est fournie, qui aide à trouver les points de terminaison de service SharePoint pour l'utilisateur connecté. Ces services peuvent être utilisés pour générer un explorateur de fichiers simple qui énumère les fichiers dans OneDrive Entreprise.
Génération d'un explorateur de fichiers simple pour OneDrive Entreprise
L'objectif de cette application est d'énumérer les fichiers stockés dans OneDrive Entreprise. La source de cet exemple est sur GitHub.
Prise en main
Les structures et les bibliothèques répertoriées ci-dessous sont utilisées dans cette application.
Bootstrap, pour la disposition et le style.
AngularJS, pour la liaison des données avec l'interface utilisateur.
API Office 365, pour l'interaction avec Office 365 afin d'énumérer OneDrive Entreprise.
Les services utilisés dans l'application de démonstration pour récupérer les fichiers à partir de OneDrive sont les suivants :
Services de découverte O365, pour rechercher les points de terminaison de service SharePoint pour l'utilisateur connecté.
API de fichiers, pour extraire les informations de fichiers et de dossiers OneDrive Entreprise de l'utilisateur.
Création de contextes d'authentification et de découverte
Pour que votre application puisse accéder aux services Office 365, elle doit être authentifiée. La structure de consentement commun dans Azure AD gère l'authentification.
Les objets élémentaires dont vous avez besoin pour pouvoir effectuer des opérations avec le service O365 sont les objets de contexte. Pour l'application de démonstration, les objets de contexte suivants sont requis :
Contexte d'authentification
Contexte de découverte
Le code ci-dessous construit ces objets comme suit :
var authContext = new O365Auth.Context();
var discoveryContext = new O365Discovery.Context();
L'objet authContext vous permet de récupérer les jetons d'accès et le jeton d'ID requis, qui peuvent être utilisés pour obtenir les informations d'utilisateur et pour appeler des services spécifiques.
L'objet discoveryContext vous permet de récupérer les fonctionnalités des services Office 365, tels que Courrier, Calendrier ou MyFiles, ainsi que les points de terminaison d'URL qui leur correspondent.
Une fois que vous disposez du jeton d'ID requis, il peut être utilisé pour identifier l'utilisateur. Le jeton d'ID est un jeton web encodé en Base64. Vous pouvez utiliser ce jeton pour extraire l'utilisateur actuellement connecté, comme suit.
authContext.getIdToken("https://outlook.office365.com/").then(
(function (token) {
// Can use token.givenName and token.familyName
}).bind(this), function (reason) {
console.og(reason.message);
});
Le jeton d'accès est un jeton web encodé en URL au format Base64 qui peut être utilisé pour l'accès aux API. Voici comment vous pouvez obtenir le jeton d'accès utilisé pour appeler les services SharePoint.
authContext.getAccessTokenFn('Microsoft.SharePoint')
Utilisation de l'API de fichiers
L'objet des fonctionnalités SharePoint pour « MyFiles » vous permet de travailler par programmation avec les fichiers et les dossiers. Pour cela, vous devez obtenir tout d'abord la collection des fonctionnalités, puis rechercher la fonctionnalité MyFiles dans la collection retournée. Pour obtenir l'objet des fonctionnalités, utilisez le service de découverte en transmettant le jeton accès pour Microsoft.SharePoint comme suit :
var fileCapability;
discoveryContext.services(authContext.getAccessTokenFn(
'Microsoft.SharePoint')).then(
(function (capabilities) {
// We have the capabilities object.
// Enumerate the object to get the capability
// for "My Files"
capabilities.forEach(function (v, i, a) {
if (v.capability === 'MyFiles') {
filesCapability = v;
}
});
}).bind(this), function (error) {
// error
});
Maintenant que vous disposez de l'objet des fonctionnalités pour MyFiles, vous pouvez créer un client SharePoint et appeler des API de fichiers pour utiliser les fichiers utilisateur, tels que les fichiers stockés sur OneDrive Entreprise.
Créer l'objet client SharePoint
Pour créer l'objet client SharePoint, nous avons besoin des informations d'URI de point de terminaison stockées dans l'objet des fonctionnalités et du jeton d'accès pour la ressource.
var sharePoint = new
Microsoft.CoreServices.SharePointClient (
filesCapability.endpointUri,
authContext.getAccessTokenFn(
filesCapability.resourceId)
);
Récupérer des fichiers et des dossiers
À présent, nous pouvons énumérer les fichiers en appelant getFileSystemItems() comme suit :
sharePoint.files.getFileSystemItems().fetch().then(
function (value) {
value.currentPage.forEach(function (o) {
// o._type will indicate whether this is a
// file or folder.
// o._Id provides the full path.
// o._name provides the name of the file.
});
}, function (reason) {
console.log(reason);
});
Dans l'application de démonstration, l'application récupère les informations pour chaque fichier et stocke ces informations dans un objet JSON local. L'application lie l'objet JSON à l'interface utilisateur à l'aide d'AngularJS.
Essayez !
L'application complète est disponible dans Github. Téléchargez et essayez l'exemple, et faites-nous part de vos suggestions. Nous aimerions connaître votre opinion sur les nouvelles API.