Table des matières

OneDrive à partir de Linux

FIXME

Nota :

Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Gras

Introduction

Il y a plusieurs solutions client/serveur pour héberger ses fichiers et y accéder à travers une interface conviviale dont onedrive au même titre que Nextcloud, Dropbox, Google Drive, Amazone cloud drive et Box, pour ne citer que les plus connues.

Onedrive est proposé par Microsoft, qui n'a pas créé de client pour Linux.

Aussi si vous souhaitez accéder à votre espace de stockage OneDrive depuis un poste Linux, la solution passe par le programme tiers opensource onedrived qui utilise l'API officielle de OneDrive. Onedrived gère la synchronisation de fichiers, comme le client de Microsoft sous Windows.

L'installation de onedrived n'est pas vraiment facile puisque vous devrez installer auparavant de nombreuses dépendances ainsi que des outils utilisés par le programme.

Une fois votre compte OneDrive lié à onedrived, vous pourrez alors synchroniser vos fichiers avec votre espace en ligne et vos autres ordinateurs qui peuvent être sous Windows.

Installation

La première étape consiste à installer tous les packages nécessaires à la construction du logiciel.

sudo apt install build-essential libcurl4-openssl-dev libsqlite3-dev
sudo snap install --classic dmd && sudo snap install --classic dub

Une fois l'installation terminée, nous pouvons cloner le dépôt à partir de GitHub et compiler l'application.

git clone https://github.com/skilion/onedrive.git
cd onedrive
make

Ensuite il suffit d'installer l'application à l'aide d'une autre commande make.

sudo make install

Utilisation

Premier lancement de l'application :

onedrive
Authorize this app visiting:
 
A really big URL.
 
Enter the response uri:

Cela fournit une URL que vous devrez collez dans votre navigateur qui vous invitera à vous connecter à OneDrive, puis vous demandera d'accorder au client OneDrive Free l'autorisation d'accéder à votre OneDrive.

  1. Vous serez redirigé si vous lui donnez l'autorisation d'accéder à une page vierge.
  2. Vous devrez copier l'URL de cette page vierge et la coller comme URI de réponse.
  3. Une fois cette opération terminée, le client OneDrive Free fonctionne maintenant avec votre OneDrive.
  4. Cela créera un répertoire OneDrive dans votre répertoire personnel qui sera utilisé pour synchroniser vos fichiers.
Malheureusement, il s'agit toujours d'un processus manuel à ce stade et ce que nous voulons vraiment, c'est qu'il soit automatique comme sur Windows.

Pour ce faire, il suffit de créer un service systemd qui démarrera automatiquement avec le système d'exploitation et gardera vos fichiers synchronisés.

systemctl --user enable onedrive systemctl --user start onedrive

Maintenant, nous pouvons nous assurer qu'il est opérationnel en utilisant la commande suivante:

journalctl --user-unit onedrive -f

Ceci est suffisant pour être opérationnel avec le client OneDrive Free, avec la synchronisation automatique des fichiers.

Configurations dispos

Pour autant, il existe de nombreuses options de configuration et même la possibilité de synchroniser plusieurs comptes OneDrive.

Tout cela peut être trouvé sur la page GitHub.

Enfin si la synchronisation ne se fait pas automatiquement lors de la première utilisation, il est possible de la réaliser manuellement de la façon suivante:

onedrive --resync

Mise à jour de l'authentification

Après un certain temps d'utilisation, le marqueurs d'authentification (tokens) échoirons et vous ne serez plus en mesure de vous connecter.

Vous verrez s'afficher quelque chose comme

ERROR: Microsoft OneDrive API returned an error with the following message:
  Error Message:    HTTP request returned status code 400 (Bad Request)
  Error Reason:     AADSTS70043: The refresh token has expired or is invalid due to sign-in frequency checks by conditional access. The token was issued on 2023-10-03T23:49:59.3894309Z and the maximum allowed lifetime for this request is 2592000. Trace ID: 0cfb1380-852a-4b5e-b07e-22266e052900 Correlation ID: c0f028a8-8c26-4b8b-aec8-4223c6aadbfb Timestamp: 2023-11-03 14:08:41Z
  Calling Function: acquireToken()
 
 
ERROR: Microsoft OneDrive API returned an error with the following message:
  Error Message:    HTTP request returned status code 401 (Unauthorized)
  Error Reason:     Access token is empty.
  Error Timestamp:  2023-11-03T14:08:42
  API Request ID:   df7a0b82-ac61-4089-9cb0-26b5e4306da2
  Calling Function: init()

Voici comment rafraîchir vos marqueurs (tokens) en trois étapes faciles (ajoutez seulement de l'eau)

Première étape

En terminal, réclamez une nouvelle authentification.

onedrive --monitor --reauth

Ça vous retournera quelque chose comme:

Deleting the saved authentication status ... re-authentication requested
Configuring Global Azure AD Endpoints
Authorize this app visiting:
 
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=OnNeSegênePasPourDansLaCréationDuneAdresseQuiNenFinitPlus
 
Enter the response uri:

Ne fermez pas le terminal

Deuxième étape

Troisième étape

Vous trouverez, à la fin de l'authentification onedrive, une page blanche sur votre fureteur.

Ne fermez pas cette page blanche!

Enter the response uri:
1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !