Создать постоянную общедоступную ссылку для загрузки файла OneDrive с помощью Microsoft Graph - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь получить постоянную общедоступную ссылку для загрузки файла OneDrive с помощью Microsoft Graph API.Цель состоит в том, чтобы на моем веб-сайте было <img src="DOWNLOAD_LINK">, а файл образа OneDrive работает для любого пользователя, просматривающего страницу.

В настоящее время я пробовал следующие вещи:

  1. GET https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png ( doc ), который возвращает

    • @microsoft.graph.downloadUrl: публичная ссылка для скачивания, но срок ее действия истекает через 1 час.
    • webUrl: приватная ссылка для скачивания, требуется аутентификация.

.

POST https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png:/createLink ( doc ) с телом JSON
{
    "type": "view",
    "scope": "anonymous"
}

, который возвращает

  • link.webUrl: публичная ссылка, но нессылка для скачивания.Вместо этого он открывает файл в средстве просмотра файлов OneDrive (которое я затем не могу использовать / вставлять в HTML).

.

https://stackoverflow.com/a/37951378/2219407

Использование предыдущего link.webUrl для создания URL-адреса для загрузки ( doc ):

$linkWebUrl = "https://domain-my.sharepoint.com/:i:/g/personal/username_domain/RANDOMTOKEN";
$b64 = base64_encode($linkWebUrl);
$b64 = trim($b64, "=");
$b64 = str_replace("/", "_", $b64);
$b64 = str_replace("+", "-", $b64);

$url = "https://api.onedrive.com/v1.0/shares/u!" . $b64 . "/root/content";

но он возвращает

{"error":{"code":"invalidRequest","message":"Invalid shares key."}}

Я думаю, это потому, что я смешиваю API Graph и OneDrive, чтобы он не распознал ключ?Замена api.onedrive.com на graph.microsoft.com также не работает, так как Graph требует обычный заголовок авторизации.

Кто-нибудь знает что-нибудь, что работает?

1 Ответ

0 голосов
/ 05 марта 2019

Вы были очень близки, но вместо шага 3 необходимо добавить параметр запроса URL download=1 к сгенерированной ссылке общего доступа, чтобы создать ссылку для скачивания , например:

https://{tenant}-my.sharepoint.com/:i:/g/personal/{account-name}_onmicrosoft_com/{token}?download=1

Вот и все.

Просто примечание, касающееся ошибки, возникающей на шаге 3.

Ссылка для обмена, созданная для OneDrive для бизнеса или SharePoint (https://tenant-my.sharepoint.com ) не удалось использовать через OneDrive Personal (https://api.onedrive.com) shares конечная точка

...