fermer
DéveloppementWeb

Utilisons PHP pour accéder à notre Dropbox

L’API Dropbox offre donc des puissantes fonctionnalités pour un service de stockage très en vogue. Toutefois, étant avant tout un développeur PHP, j’étais un peu déçu qu’il ne comprenne pas un SDK officiel pour cette plateforme et que les bibliothèques tierces disponibles sur la toile sont, malheureusement arrivées avec un certain nombre de bugs.

En tant que tel, j’ai décidé de donner une brève introduction à l’utilisation de l’API Dropbox dans un environnement de développement PHP.

Espérons qu’en suivant cet exemple il vous aidera à passer le gros du travail de base et que vous rentrerez rapidement dans l’expérimentation des fonctionnalités intéressantes qu’offrent l’API Dropbox. Ainsi, dans cet article, nous allons explorer l’API Dropbox en construisant un simple client pour accéder aux fichiers sur un compte Dropbox.

Pour garder l’article court et lisible, le code inclus sera réduit à son minimum, mais vous pourrez retrouver l’intégralité des sources sur le compte GitHub du BlogNT. Pour exécuter le code, vous aurez besoin de PHP avec le support de cURL et évidemment un compte Dropbox. Avant de débuter, commencez par télécharger les fichiers source sur ce lien : https://github.com/BlogNT/API-Dropbox-en-PHP.

Avant de débuter cet article, je ne peux que vous recommander de vous rendre sur la documentation dédiée aux développeurs sur le site de Dropbox. De là, vous pourrez retrouver la documentation de référence de l’API ainsi que quelques concepts de base, et un guide des meilleures pratiques. Vous pouvez également télécharger les SDK officiels, mais malheureusement PHP ne figure pas parmi les langages pris en charge.

Création de l’application sur Dropbox

La première chose que nous devons faire est de nous connecter sur notre compte Dropbox afin d’associer votre application de test avec votre compte. Pour ce faire, rendez-vous sur le site dropbox.com et connectez-vous. Ensuite, nous aurons besoin d’enregistrer notre application de test avec Dropbox afin d’obtenir une paire de clés unique pour accéder à l’API.

Pour ce faire, rendez-vous à l’URL https://www.dropbox.com/developers/apps, et cliquez sur le gros bouton bleu “Create an App” pour créer votre application. Dropbox vous demandera un nom, la description et le type d’accès que vous souhaitez donner à votre application.
Veuillez noter que le paramètre “type” spécifie le type d’accès que vous souhaitez donner à votre application, autrement dit si elle sera capable de lire ou écrire des fichiers. La valeur recommandée est “App Folder”, un répertoire qui sera créé dans votre home. En sélectionnant “Full Dropbox”, l’application aura accès à l’ensemble de la Dropbox

Création de l'application Dropbox

Une fois que votre application est créée, il y aura une page d’options où vous pouvez modifier les détails, et dans laquelle vous allez trouver les identifiants d’accès.

Résumé de création de l'application

L’application nouvellement créée sera en état de “développement”. Cela nous permettra d’immédiatement commencer à développer celle-ci, et permettre jusqu’à cinq autres utilisateurs de se connecter et de tester. Lorsque l’application sera prête pour être publiée, on pourra demander le statut de “production”, et l’équipe Dropbox l’examinera pour s’assurer qu’elle est conforme à leurs termes et conditions d’utilisation.

Développement de l’application

Maintenant que nous avons enregistré notre application, nous pouvons commencer à développer un “framework” de base pour interagir avec l’API Dropbox.

Tout d’abord, nous allons créer un fichier de configuration qui va retenir notre “App key” et “App secret” qui sont les clés pour nous connecter. Nous allons utiliser le fichier de configuration tout au long du processus.
Dans votre environnement de développement, créez un fichier config.php et ajoutez le code suivant (ou mettez à jour le fichier de l’exemple que j’ai fournis). Remplacer le "xxxxx" avec votre paire “App key/secret”.

[sourcecode language=”PHP”]
<?php

$app_key = ‘xxxxx’;
$app_secret = ‘xxxxx’;
[/sourcecode]

Notre principal objectif de la première étape est de créer un processus d’authentification qui va essentiellement autoriser un utilisateur d’interagir avec notre application Dropbox. L’API Dropbox utilise OAuth (oauth.net) pour authentifier un utilisateur.

Comme vous pouvez le voir dans le code ci-dessus, ce script demande un jeton OAuth de Dropbox en utilisant cURL. Pour information, un jeton, token en anglais, est une chaîne de caractères unique qui sera utilisée pendant le processus d’authentification.

Note : Assurez-vous de modifier la variable $url_step_2 au début du script par votre propre URL de destination.

Pour les besoins de cet exemple, nous allons stocker le jeton de retour dans une variable de session. Veuillez noter que ce n’est ni la meilleure façon, ni la plus sécurisée, de stocker des données. Mais, comme il s’agit d’un exemple simple, cela fera très bien l’affaire pour cet exemple.

[sourcecode language=”PHP”]
$_SESSION[‘myapp’] = array();
$_SESSION[‘myapp’][‘oauth_request_token’] = $parsed_request_token[‘oauth_token’];
$_SESSION[‘myapp’][‘oauth_request_token_secret’] = $parsed_request_token[‘oauth_token_secret’];
[/sourcecode]

La dernière partie de cette étape redirige l’utilisateur vers le site Web de Dropbox. Du point de point de vue utilisateur, si tout va bien, l’exécution du script sera transparent et simplement redirigée vers la page de destination Dropbox, autrement dit http://localhost/API-Dropbox-en-PHP/samples-2.php dans mon exemple.

Authentification Dropbox en PHP

Une fois cette autorisation donnée, Dropbox va automatiquement créer un dossier dans le compte de l’utilisateur qui pourra être en interaction avec via notre application. En haut de l’exemple ci-dessus, assurez-vous de bien changer la variable $url_step_3 correspondant votre propre URL de destination.

En résumé, l’étape 2 va valider la réponse lorsque l’utilisateur a confirmé la connexion à votre application et il va alors envoyer une demande de token “access” (par opposition au token reçu dans la première étape). Une fois le jeton reçu, nous allons de nouveau stocker ces variables dans notre variable de session.

La fin de ce script va nous rediriger vers l’étape finale ! En utilisant notre jeton “access” stocké, nous pouvons maintenant effectuer des appels à notre disposition sur l’API Dropbox.

Premier appel à l’API

Lors de ce premier appel à l’API Dropbox, nous allons afficher les informations de l’utilisateur connecté. Pour ce faire nous appelons l’URL suivante : https://api.dropbox.com/1/account/info.

Affichage des informations de l'utilisateur connecté

Listing des fichiers de notre Dropbox

Dans notre exemple, nous demandons les métadonnées du contenu du dossier de l’application créée, puis nous affichons les données à l’écran. Ceci est spécifié par la ligne suivante :

[sourcecode language=”PHP”]
curl_setopt( $ch, CURLOPT_URL, ‘https://api.dropbox.com/1/metadata/sandbox’);
[/sourcecode]

Pour un meilleur exemple, connectez-vous sur votre compte Dropbox, et téléchargez une photo dans le dossier de l’application, situé dans le répertoire principal Apps. Relancez l’étape 3, et vous devriez maintenant voir les méta-données de votre image :

Méta-données de votre image

En utilisant ce même résultat, il est très facile de lister les fichiers. Pour ce faire, nous allons parcourir la propriété contents.

Conclusion

Comme vous pouvez le voir ci-dessus, sachant que le jeton est enregistré dans une variable en session vous ne devriez pas besoin de relancer à nouveau l’étape 1. Vous aurez seulement besoin de recommencer si la variable de session est supprimée ou le token est arrivé à expiration.

Jouer avec les autres méthodes proposées par l’API est un jeu d’enfant, n’hésitez pas à vous appuyer sur l’exemple que je vous fournis. Vous pouvez retrouver la liste complète des méthodes à ce lien : https://www.dropbox.com/developers/reference/api#metadata.

Pour rappel, les scripts ont été développés pour fournir un exemple de base à l’API Dropbox fonctionnant en PHP. Il y a beaucoup d’éléments qui peuvent être améliorés et je vous recommande de ne pas d’utiliser ce code en production…

J’espère vous avoir donné quelques conseils, n’hésitez pas à venir partager vos créations et apporter votre expérience dans le développement.

Tags : APIDropboxPHP
Yohann Poiron

The author Yohann Poiron

J’ai fondé le BlogNT en 2010. Autodidacte en matière de développement de sites en PHP, j’ai toujours poussé ma curiosité sur les sujets et les actualités du Web. Je suis actuellement engagé en tant qu’architecte interopérabilité.