2016-11-06 5 views
1

У меня есть общедоступная папка OneDrive с несколькими различными подпапками и файлами. То есть Я поделился им по ссылке, поэтому любой, у кого есть эта ссылка, может получить к ним доступ.Доступ к общедоступной папке OneDrive через API

Есть ли способ получить доступ к этим файлам с любого клиентского JavaScript или какого-либо кода на стороне сервера через какой-либо REST-API? Без использования каких-либо пользовательских учетных данных?


Что я пытался

Я смотрел на Accessing Shared Content странице, и это выглядит как то, что я хочу, но не могу понять, как использовать его.

Я взял что-то похожее на идентификатор из общего URL-адреса, который выглядит длинным шестнадцатеричным числом (которое, кажется, указывает на меня?), A !, а затем число (которое я предположим, что это связано с общим ресурсом).

Я тогда попытался вставить его в этом URL:

https://api.onedrive.com/v1.0/shares/<id>/root?expand=children 

Но я получить обратно 400 Bad Request, так что-то не совсем верно ...

Я думаю, возможно, какая-то аутентификация отсутствует, но поскольку общие файлы являются общедоступными, мне не нужно регистрироваться со своими учетными данными, и, конечно же, я не могу использовать свой собственный код.

Я пробовал register an app, где я получаю идентификатор приложения (guid) и могу генерировать пароли и ключевые пары. Надеялся, возможно, я мог бы использовать, но не видят в API, как и где на самом деле использовать те ...


Гол

Общая папка содержит ноты для хора, что я несу ответственность за обновление (и синхронизация OneDrive здесь очень удобна).

Некоторые члены не очень разбираются в компьютерах, поэтому я хотел бы как можно проще видеть и загружать эти файлы. Общая ссылка с «перейдите сюда к этому другим странным сайтам и найдите там файлы« -text », но я бы очень хотел перечислить файлы непосредственно в области только для членов нашего сайта. В основном просто «вот файлы, щелкните по одному, чтобы загрузить его».

+0

Я ничего не вижу в вопросе о JSON; есть ли причина, по которой есть тег? –

+0

@MikeMcCaughan Главным образом, что остальные api, казалось, вернули JSON. Я поставил его в конце, но, по какой-то причине StackOverflow заказал теги, имеющие наименьшее значение для наиболее релевантных: P – Svish

+0

Итак, некоторые люди (например, я) следуют тегу JSON для вопросов относительно формата, как разобрать и т. Д. Поскольку этот вопрос не имеет ничего общего с форматом, как анализировать и т. Д., Было бы предпочтительнее не включать тег. Теги предназначены для категоризации вопроса, а не только для тех технологий, которые касаются тангенциально связанных с ним технологий. –

ответ

3

Да, вы можете использовать API REST для доступа к содержимому папки.

API - это тот, который вы упомянули, API shares. Однако, похоже, вы используете неправильный идентификатор.

Самый простой способ сделать это - следовать инструкциям до encode the actual sharing URL into a token. Таким образом, вы создаете кодированную версию ссылки для совместного использования base64, добавьте «u!» на фронт этой строки, а затем сделайте точный вызов, о котором вы уже упоминали. Вы получите список файлов в общей папке, и вы можете перейти оттуда.

Вот пример: Вот ссылка для общего доступа к папке в OneDrive с некоторыми фотографиями.

https://1drv.ms/f/s!AtuAM_NacwVahiFpuMGS_BiQCwWu

Чтобы преобразовать этот URL в API, сначала base64 кодирования URL и добавьте u!

у aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdHVBTV9OYWN3VmFoaUZwdU1HU19CaVFDd1d1

Теперь вы можете использовать этот URL в качестве маркера обмена, а также расширить детей и эскизы:

https://api.onedrive.com/v1.0/shares/u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdHVBTV9OYWN3VmFoaUZwdU1HU19CaVFDd1d1/root?expand=children

Щелкнув на этой нижней линии должны дать вам ответ в формате JSON, который включает общую папку и дочерние элементы внутри папки.

+0

Хм, вот что я пытался сделать ... У вас будет пример этого, который работает? – Svish

+0

Я добавил пример моего ответа. –

+0

Для кодировки base64 вы должны убедиться, что это URL-адрес безопасен - см. Https://en.wikipedia.org/wiki/Base64#URL_applications (в частности, часть о замене + на - и/с _) – Brad