====== OneDrive à partir de Linux ======
* Objet : synchroniser des fichiers présents sous OneDrive à partir de Linux.
* **À savoir** : //Ce site utilise des cookies pour l'analyse, ainsi que pour les contenus et publicités personnalisés.//
* Niveau requis : {{tag>débutant}}
* Commentaires : //synchroniser des fichiers présents sous OneDrive à partir de Linux. //
* Débutant, à savoir : [[[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi : {{tag>à-tester}}
* Création par [[user>cdarsac]] 01/01/2020
* Testé par <...> le <...> FIXME
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=26028 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
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.
- Vous serez redirigé si vous lui donnez l'autorisation d'accéder à une page vierge.
- Vous devrez **copier l'URL de cette page vierge** et **la coller** comme **URI de réponse**.
- Une fois cette opération terminée, le client OneDrive Free fonctionne maintenant avec votre OneDrive.
- 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 ====
* Copiez l'adresse interminable qui vous est soumise, dans notre exemple c'est la courte et touchante //https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=OnNeSegênePasPourDansLaCréationDuneAdresseQuiNenFinitPlus
//
* Collez cette adresse dans la barre d'adresse de votre fureteur
* Ça vous amènera à vous authentifier sur votre serveur onedrive en ligne
==== Troisième étape ====
Vous trouverez, à la fin de l'authentification onedrive, une page blanche sur votre fureteur.
Ne fermez pas cette page blanche!
* copiez-en l'adresse interminable
* revenez à votre terminal et collez cette adresse interminable au bout de la ligne
Enter the response uri:
* Vous deviez avoir de nouveau accès à vos synchronisations et autres fonctions.