2017-05-29 4 views
0

j'essaie de faire de l'intégration avec onedrive, en utilisant l'API https://dev.onedrive.com/getting-started.htmOneDrive API (reste). Les dossiers et fichiers sur les lecteurs

Je fais le travail auth et je peux obtenir la liste des lecteurs dans le compte. Lorsque j'exécute l'appel API/moi/lecteurs, je reçois la liste des lecteurs bien.

Mais je ne peux pas trouver comment obtenir la liste des dossiers sur un lecteur, les sous-dossiers d'un dossier, etc.

De la documentation que je peux voir, il y a une API pour cela, mais il ne fonctionne pas pour moi . https://dev.onedrive.com/items/list.htm

Je dois exécuter de.

GET /drive/items/{item-id}/children 
GET /drive/root:/{item-path}:/children 

Mais cela ne fonctionne pas. J'ai un ID de lecteur à partir d'une liste de lecteurs. Quand j'exécute GET/drive/items/DRIVEID/children J'ai une erreur "Accès refusé Vous n'avez pas l'autorisation d'effectuer cette action ou d'accéder à cette ressource."

Comment effectuer cette opération? devrais-je utiliser un ID de lecteur ou un nom? peut-être l'URL est fausse, ce qui doit être l'URL correcte si j'ai un nom de lecteur, ID?

Répondre

2

J'ai trouvé comment faire. Pour comprendre j'ai dû installer un autre outil où l'API OneDrive est utilisée et déboguer le trafic avec un sniffer https.

Donc, si endpoint est https://graph.microsoft.com/v1.0/me/ alors les chemins sont

/drives/DRIVEID/root/children 

pour racine du lecteur

/drives/DRIVEID/root:myfolder/subfolder:/children 

pour un dossier myfolder/sous-dossier

URL finale est comme

https://graph.microsoft.com/v1.0/me/drives/DRIVEID/root:myfolder/subfolder:/children 
+0

Juste ce dont j'avais besoin! Merci. J'ai dû modifier l '' url finale 'que vous avez ici pour que ça marche pour moi avec un/after/root: IE:/root:/myFolder:/children et ensuite il m'a donné tous les fichiers sous ce dossier. –

0

/drive est un raccourci pour dire /drives/<driveidofcaller>. Lorsque vous essayez d'interroger quelqu'un elses lecteur que vous voudriez /drives/DRIVEID, et ainsi étendre à votre exemple, vous voudriez quelque chose comme:

GET /drives/DRIVEID/root/children